Maven如何指定工程进行单元测试构建

引言:
去查找这个问题,是因为在使用hudson的持续集成环境时,执行下面的命令:
mvn clean compile test sonar:sonar

总是会报,类似的工程依赖的错误:

1) com.alibaba.china.app:avatar.bundle.war:war:1.0-SNAPSHOT

Try downloading the file manually from the project website.

Then, install it using the command:
mvn install:install-file -DgroupId=com.alibaba.china.app -DartifactId=avatar.bundle.war -Dversion=1.0-SNAPSHOT -Dpackaging=war -Dfile=/path/to/file

Alternatively, if you host your own repository you can deploy the file there:
mvn deploy:deploy-file -DgroupId=com.alibaba.china.app -DartifactId=avatar.bundle.war -Dversion=1.0-SNAPSHOT -Dpackaging=war -Dfile=/path/to/file -Durl=[url] -DrepositoryId=[id]

Path to dependency:
1) com.alibaba.china.app:avatar.deploy:jar:1.0-SNAPSHOT
2) com.alibaba.china.app:avatar.bundle.war:war:1.0-SNAPSHOT

----------
1 required artifact is missing.

,原因分析:
由于hudson的持续集成环境是整个部门进行公用,而工程的特殊性是要依赖二方库,在不同的时间段编译时,不同的需求或者项目所依赖的同一个二方库可能是不一样的,但由于mvn中指定的版本是一样的(统一用了1.0-SNAPSHOT版本),导致了在某一个时刻,一些应用的持续集成是失败的。为了解决这个问题,当时是采用了在每次工程构建时,将二方库进行清理,再进行持续构建。但这样的做法,却导致了出现上面的问题。
因为deploy工程需要从mvn仓库中寻找bundle.war工程,而bundle.war工程却是需要通过mvn install 方式将包安装到mvn 仓库,将mvn 仓库清理后,bundle.war的war包自然也找不到了,所以depoloy构建时就报错了。
分析:
deploy工程在我们的应用中只是包含模板文件,部署的配置文件,是没有单元测试文件进行运行的。所以能否在构建时将指定的工程进行持续构建,不就解决了这个问题?
于是从网上搜索Maven指定工程进行编译、测试构建的方式,找到了[url=http://markmail.org/message/vf3qaxnjtxelj3b2]http;l://markmail.org/message/vf3qaxnjtxelj3b2[/url]这样的一篇文章,参照里面的配置在pom文件,增加profile,并使用-P 命令进行执行,但结果却不起作用。
执行了mvn -h,找到
   -pl,--projects     Build specified reactor projects  instead of all projects

  可以对指定工程进行操作。开始试验单个工程:
   mvn test -pl biz/cases

发现命令行输出,只对biz/cases工程进行了单元测试,成功。
针对多个工程:
   mvn test -pl biz/cases biz/common 

结果并没有按照预期的两个工程进行单元测试,而是直接抛出了错误,提示Invalid task错误。
猜想应该是后面的多个工程的格式有问题,因为mvn对于空格之间的内容,是当作参数来进行执行。
尝试:
 mvn test -pl biz/cases,biz/common

大功告成,OK。
后续的hudson配置就比较简单了,在工程配置界面里,填写的mvn命令下,增加-pl选项,将你想要执行构建的工程加上去,之后点击保存,再重新构建。如图:

[img]http://dl.iteye.com/upload/attachment/494415/d7b97148-0932-3c9f-a73d-9546a8ab5c53.png[/img]
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值