maven-2에서 Maven 플러그인 실행이 실행될 때 단계를 조정하려고합니다. 그것은 (따라서 0 %의 커버리지 보고서를 생성하고, 계측 코드를 제거) AspectJ를를 사용하는 다른 플러그인과 충돌하지 않도록Maven -보고 섹션에서 선언 된 Plugin 실행 위치를 조정하십시오.
내 특정 문제는 라이프 사이클 단계 process-test-classes
에 바인딩 cobertura:instrument
단계를 실행하려고 함께 . 그러나 제 질문은 좀 더 일반적인 질문입니다. 내가 mvn test
모든 것이 잘 작동 실행할 때
<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>
...
이 방법, cobertura : 악기가에서 실행되는 deafault 라이프 사이클 내에서
, 내 플러그인 선언에서 실행 섹션을 추가하여 그렇게 관리해야 내가 원하는 단계는, 클래스 등, 테스트 계측 클래스와 실행, 계측 받기 출력을 요약 : 나는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] [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}]
그러나, 나는 플러그인에 대한 실행 단계 통제 할 수없는 것 같다. 내보고 섹션이 포함되어,
[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.
악기를 두 번 호출되는 플러그인에 의해 정의 된 (나는 가정) 기본 상 하나, 또 다른 :
<reporting>
<plugins>
...
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.4</version>
</plugin>
그리고 mvn site
의 출력 (요약)를 말한다 내 재정의 단계에서 하나. 사이트 수명주기의 일부로 실행되는 플러그인에서 발생했다고 생각됩니다.
질문 : 보고 섹션/사이트 수명주기 내에서 플러그인 실행을 조정하는 방법을 찾지 못했습니다. 어떤 힌트?
maven-2를 사용하고 있다고 가정 할 때, maven-3과 동일한 문제가 있습니까? – MrDrews
당신이 옳다고 가정하고 있습니다. 나는 maven-3로 이주하지 않았다. 필자는 다른 방법으로 범위 보고서를 생성하는 특정 문제를 해결했습니다. 즉 cobertura-it maven 플러그인을 사용하여 실행 단계에 대한 세부적인 제어를 제공합니다. –