Car*_*bés 7 maven-2 cobertura maven-plugin maven
我试图调整maven插件执行将在maven-2中运行的阶段.
我的具体问题是尝试运行cobertura:instrument绑定到生命周期阶段的步骤process-test-classes,以便它不会与使用aspectj的其他插件冲突(并删除检测代码,从而生成0%的覆盖率报告).但我的问题更通用.
在deafault生命周期内,我通过在插件声明中添加一个执行部分来实现这一目标:
<build>
<plugins>
...
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>instrument-late</id>
<phase>process-test-classes</phase>
<goals>
<goal>instrument</goal>
</goals>
</execution>
</executions>
</plugin>
...
Run Code Online (Sandbox Code Playgroud)
这样,当我运行mvn test一切正常时,cobertura:仪器在我想要的阶段运行,类得到检测,测试运行与检测类等等.这是汇总输出:
[INFO] [clean:clean {execution: default-clean}]
[INFO] [buildnumber:create {execution: default}]
[INFO] [native2ascii:native2ascii {execution: native2ascii-utf8}]
[INFO] [native2ascii:native2ascii {execution: native2ascii-8859_1}]
[INFO] [resources:resources {execution: default-resources}]
[INFO] [compiler:compile {execution: default-compile}]
[INFO] [jar:jar {execution: lib}]
[INFO] [resources:testResources {execution: default-testResources}]
[INFO] Preparing hibernate3:hbm2ddl
[WARNING] Removing: hbm2ddl from forked lifecycle, to prevent recursive invocation.
[INFO] [buildnumber:create {execution: default}]
[INFO] Change the default 'svn' provider implementation to 'javasvn'.
[INFO] Checking for local modifications: skipped.
[INFO] Updating project files from SCM: skipped.
[INFO] Storing buildNumber: 2082 at timestamp: 1299861835678
[INFO] Storing buildScmBranch: trunk
[INFO] [native2ascii:native2ascii {execution: native2ascii-utf8}]
[INFO] [native2ascii:native2ascii {execution: native2ascii-8859_1}]
[INFO] [resources:resources {execution: default-resources}]
[INFO] [hibernate3:hbm2ddl {execution: default}]
[INFO] [compiler:testCompile {execution: default-testCompile}]
[INFO] [jar:test-jar {execution: tests}]
[INFO] [dbunit:operation {execution: test-compile}]
[INFO] [cobertura:instrument {execution: instrument-late}]
[INFO] [surefire:test {execution: default-test}]
[INFO] Surefire report directory: /home/carles/dev/ism4web/portasigma/portasigma-web/target/surefire-reports
...
Results :
Tests run: 62, Failures: 0, Errors: 0, Skipped: 0
Flushing results...
Flushing results done
Cobertura: Loaded information on 74 classes.
Cobertura: Saved information on 74 classes.
[INFO] [dbunit:operation {execution: test}]
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做时,mvn site我似乎无法控制插件的执行阶段.我的报告部分包含:
<reporting>
<plugins>
...
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.4</version>
</plugin>
Run Code Online (Sandbox Code Playgroud)
mvn site(总结)的输出说:
[INFO] [clean:clean {execution: default-clean}]
[INFO] [buildnumber:create {execution: default}]
[INFO] [native2ascii:native2ascii {execution: native2ascii-utf8}]
[INFO] [native2ascii:native2ascii {execution: native2ascii-8859_1}]
[INFO] [resources:resources {execution: default-resources}]
[INFO] [compiler:compile {execution: default-compile}]
[INFO] [jar:jar {execution: lib}]
[INFO] [cobertura:instrument {execution: default-instrument}]
[INFO] [hibernate3:hbm2ddl {execution: default}]
[INFO] [compiler:testCompile {execution: default-testCompile}]
[INFO] [jar:test-jar {execution: tests}]
[INFO] [dbunit:operation {execution: test-compile}]
[INFO] [cobertura:instrument {execution: instrument-late}]
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Unable to prepare instrumentation directory.
Embedded error: source and destination are the same directory.
Run Code Online (Sandbox Code Playgroud)
仪器被调用两次,一个在插件定义的(我假定的)默认阶段,另一个在我重新定义的阶段.我想这来自于作为网站生命周期的一部分运行的插件.
问题:我还没有找到如何在报告部分/网站生命周期内调整插件执行.任何提示?
我在这里猜测,但我认为发生的情况是,因为 cobertura 目标在其自己的生命周期中运行,所以检测步骤被调用两次,一次来自 Maven 生命周期,一次来自 cobertura 生命周期。
| 归档时间: |
|
| 查看次数: |
3324 次 |
| 最近记录: |