Maven目标进行cobertura分析和安装

时间:2016-03-17 10:24:12

标签: maven jenkins cobertura maven-cobertura-plugin

我正在使用JenkinsMaven来构建一些Java项目。另外,我正在使用Cobertura进行覆盖率分析。因此,我设置了Jenkins Maven构建作业并配置了以下目标:

clean cobertura:cobertura

这适用于覆盖率分析但不会生成在POM中配置的任何jar输出。我认为这是因为Maven目标package不在Cobertura lifecycle

为了获取jar文件,我尝试将其更改为

clean cobertura:cobertura install

这正在完成工作,但又遇到了另一个问题:从resourcestest的每个目标都执行了两次:(控制台输出看起来像(删除了细节线)

[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ HelloWorld ---
[INFO] >>> cobertura-maven-plugin:2.7:cobertura (default-cli) > [cobertura]test @ HelloWorld >>>
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ HelloWorld ---
[INFO] --- maven-compiler-plugin:3.5.1:compile (default-compile) @ HelloWorld ---
[INFO] --- cobertura-maven-plugin:2.7:instrument (default-cli) @ HelloWorld ---
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ HelloWorld ---
[INFO] --- maven-compiler-plugin:3.5.1:testCompile (default-testCompile) @ HelloWorld ---
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ HelloWorld ---
[INFO] <<< cobertura-maven-plugin:2.7:cobertura (default-cli) < [cobertura]test @ HelloWorld <<<
[INFO] --- cobertura-maven-plugin:2.7:cobertura (default-cli) @ HelloWorld ---
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ HelloWorld ---
[INFO] --- maven-compiler-plugin:3.5.1:compile (default-compile) @ HelloWorld ---
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ HelloWorld ---
[INFO] --- maven-compiler-plugin:3.5.1:testCompile (default-testCompile) @ HelloWorld ---
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ HelloWorld ---
[INFO] --- maven-jar-plugin:2.6:jar (default-jar) @ HelloWorld ---
[INFO] --- maven-install-plugin:2.4:install (default-install) @ HelloWorld ---

有没有办法使用install使用来自resources的{​​{1}}到test的结果?

换句话说,输出如

cobertura

其他信息:更改POM不是一种选择,因为它们不是由我管理的。

1 个答案:

答案 0 :(得分:0)

简短的回答:没有。通过一些反复试验,我终于找到了一个解决方案:

离开Maven目标,如

clean cobertura:cobertura

并添加执行Maven目标的帖子构建步骤

install -Dmaven.test.skip=true

这样测试不会执行两次。 compile和类似的执行两次,但这并不是那么糟糕,因为Cobertura已经编译了一切,迫使Maven跳过这一步。

Nota bene:clean cobertura:cobertura install -Dmaven.test.skip=true是不可能的,因为test.skip开关对两个目标都有效。