论坛首页 Java企业应用论坛

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

浏览 1952 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-06-07   最后修改:2011-06-07
引言:
去查找这个问题,是因为在使用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选项,将你想要执行构建的工程加上去,之后点击保存,再重新构建。如图:
  




 

  • 大小: 15.7 KB
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics