首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Maven怎么指定工程进行单元测试构建

2012-11-03 
Maven如何指定工程进行单元测试构建引言:去查找这个问题,是因为在使用hudson的持续集成环境时,执行下面的

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指定工程进行编译、测试构建的方式,找到了http;l://markmail.org/message/vf3qaxnjtxelj3b2这样的一篇文章,参照里面的配置在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选项,将你想要执行构建的工程加上去,之后点击保存,再重新构建。如图:
  




 

热点排行