求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
 
  
 
 
     
   
分享到
持续集成之路—Maven
 
火龙果软件    发布于 2013-9-6,作者 刺猬的温驯
 

写在前面

自从参加了4月份的QCon以后,持续集成的念头一直在脑海中浮现。时隔四个月之后,终于有了实践的机会。在此,首先应该感谢头儿们的大力支持。记得参加Scrum的培训时,最开始提到的一个障碍就是来自上层。因为上层希望看到的是实实在在的成果,如果现有的开发模式和质量管理系统已经有了比较好的效果,他们就不太愿意尝试新的模式。而这次正是有了头儿们的理解和支持,我才能放开手脚、“无所顾忌”地尝试这些新手段。其次,应该感谢我的天才同事们。因为,每次即使小小的改动都会给他们的开发带来一些不便,但是他们都会毫无抱怨地接受,并且总能给出一些我意想不到的想法,帮助我不断地改善这个系统。

虽然当前的CI系统还存在诸多问题,但是应该是时候做个总结了,记下这个过程发生的点点滴滴。还是那句话,能帮助看到这些文章的同学解决一些实际的问题。

CI运行的操作系统是:64位的Cent OS

版本控制系统是CI中不可缺少的一环,在前面的两篇文章中已经记录了Subversion在CentOS下安装和配置过程:

Cent OS上配置Apache2 + SVN

Cent OS上配置Apache2 + SVN(续)实现对目录访问的精确控制

这次就从Maven开始。

第一次和Maven的交战,我铩羽而归。这次做好了打持久战的准备。

一、安装(与Eclipse集成)

在Eclipse下使用Maven,需要安装m2eclipse插件:

1、Eclipse的Help菜单-->Install New Software

2、将插件的地址(http://m2eclipse.sonatype.org/sites/m2e)添加到可用Software Site中

3、勾选中间框中出现的“Maven Integration for Maven”,下一步

4、Eclipse就开始查找可以安装的组件以及依赖的包

5、即将安装的插件,会被列出

6、经过几分钟等待以后,会提示安装成功,需要重启Eclipse

注意:

1、对于第一次安装的插件,在5、6步骤之间会出现安装协议节目,直接选择接受(Accept),下一步(Next)即可。

2、通过上面的URL安装m2eclipse的版本是最新的0.10.0,由于该版本不能直接从0.9.8或者0.9.9升级得来,因此如果原来已经安装了m2eclipse0.9.8或者m2eclipse0.9.9就需要先卸载,再安装0.10.0。卸载方法如下:

(1)Eclipse的帮助(Help)菜单中的“关于Eclipse”(About Eclipse)

(2)选择原来安装m2eclipse插件卸载即可

(3)完成卸载之后,需要重启Eclipse。然后再按照上面的步骤安装最新的m2eclipse即可。

问题:在安装正常结束,并且重启Eclipse后,有时候会看到这样的提示:Eclipse is running in a JRE, but a JDK is required

Some Maven plugins may not work when importing projects or updating source folders.

解决方法:找到Eclipse安装目录,编辑eclipse.ini文件,保存后,重启Eclipse即可:

二、使用Maven

1、新建一个项目

(1)打开新建Project向导窗口

(2)直接下一步

(3)中间步骤都直接下一步(next),直到:

这里只是创建了项目,接下来就可以使用Maven来管理项目中用到的library。

在新创建了项目之后,可以看到目录结构:

从图中可以看出,Maven自动将项目源文件和测试用例分别放到了不同的目录下,但是却使用了相同的包名。这样生成可执行的产品时,就比较容易将产品代码和测试代码隔离开;同时测试用例也可以直接引用同一包中被测试的类,既符合了JUnit的规范,也使程序更易读。

正如上图中标示,新建项目的JRE默认为J2SE-1.4,这会导致1.5之后的一些新特性得不到支持。可以通过下面的方法修改:

 

2、使用Maven管理依赖

在以往的开发中,我一般都会把用到的依赖都放到一个文件夹下,需要什么就像里面添加什么,然后和源文件一同放入到SVN中。其他开发人员在检出项目时会把这些包一起检出。但是这样做有几个弊端:

(1)最明显的一个问题,就是代码库会变得异常地大,有时候会上百兆,检出的时间会比较长

(2)为了保持每个开发人员的开发环境的设置都是独立的,我们会要求开发人员不能提交Eclipse项目配置文件,如.project、.settings等。这就需要每个开发人员必须自己配置自己Eclipse的构建路径(Build Path)。如果有新的依赖提交,而其他开发人员不知晓的情况,就可能编译会出错;

(3)Java的库文件对版本的要求比较严格,而有些第三方包发布并没有说明其所依赖的版本,需要自己苦苦寻找;

(4)虽然我们并不常会看第三方库的源代码,但是有时候也需要进去了解一下,帮助解决问题。这时就需要自己在Eclipse中指定源文件的位置。

而Maven很好的解决了以上问题,只需要一个配置文件,就可以搞定所有了。比如要在上面的MavenDemo项目中引入JUnit:

点击OK后,就会将依赖自动下载到本地,并添加到项目的构建路径中,

查看pom.xml的内容,就会发现依赖在文件中的配置:

[xhtml] view plaincopyprint?
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.4</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
</dependencies>

如果以后需要更改版本,只需要修改这里的版本号即可,当然可以从依赖的页面中删除和添加。

在上面提到了Maven可以自动管理依赖的依赖,为了显示这个强大的功能,特意引入了一个spring-core的包,然后切换到pom的Dependencies Graph页面,可以看到,虽然只引入了一个spring-core,但是Maven却自动发现了它依赖的另外两个包,省去我们的很多麻烦。

3. 运行测试用例

在/src/test/java编写一个测试用例,然后直接在项目名称上点击右键,从菜单中选择Run as-->maven test。在运行过程中,Maven会自动下载需要的包,并且给出一份详细的测试报告。

这种方式可以运行项目中所有用例。当然可以依照原来的习惯,在项目目录中选择一个文件,按照JUnit的方式运行。

相关文章

为什么要做持续部署?
剖析“持续交付”:五个核心实践
集成与构建指南
持续集成工具的选择-装载
相关文档

持续集成介绍
使用Hudson持续集成
持续集成之-依赖管理
IPD集成产品开发管理
相关课程

配置管理、日构建与持续集成
软件架构设计方法、案例与实践
单元测试、重构及持续集成
基于Android的单元、性能测试
 
分享到
 
 


集成与构建指南
项目管理:Maven让事情变得简单
持续集成工具hudson
持续集成
Maven权威指南
程序集(UML中的包)之间循环
更多...   


产品发布管理
配置管理方法、实践、工具
多层次集成配置管理
使用CC与CQ进行项目实践
CVS与配置管理
Subversion管理员


海航股份 重构及持续集成
电研华源 设计原理、建模与重构
软件配置管理日构建及持续集成
单元测试、重构及持续集成
中国软件研发中心 单元测试与重构
单元测试、重构和持续集成实践
罗克韦尔 C++单元测试+重构+Gtest
更多...