Emma – クラスxはすでに計測されているようです
`pom.xml`の” maven-emma-plugin “を見直してください:
pom.xml
<project>
//...
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>emma-maven-plugin</artifactId>
<version>1.0-alpha-3</version>
<inherited>true</inherited>
<executions>
<execution>
<phase>process-classes</phase>
<goals>
<goal>instrument</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<inherited>true</inherited>
<configuration>
<forkMode>once</forkMode>
<reportFormat>xml</reportFormat>
<classesDirectory>
${project.build.directory}/generated-classes/emma/classes
</classesDirectory>
</configuration>
</plugin>
</plugins>
</build>
</project>
1.問題
コードカバレッジレポートを生成するために `mvn emma:emma`というコマンドを実行すると、xクラスがすでにインストルメントされているかどうかを確認するメッセージが表示されます。
Failed to execute goal org.codehaus.mojo:emma-maven-plugin:1.0-alpha-3:instrument
(default-cli)
on project MkyongEmma: Execution default-cli of
goal org.codehaus.mojo:emma-maven-plugin:1.0-alpha-3:instrument failed:
class[com.mkyongemma.config.xxx]appears to be instrumented already ->[Help 1]....
問題のクラスxをビルドから除外しようとしますが、他のクラスもインストルメント済みの同じエラーに遭遇しますか?
pom.xml
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>emma-maven-plugin</artifactId>
<version>1.0-alpha-3</version>
<inherited>true</inherited>
<executions>
<execution>
<phase>process-classes</phase>
<configuration>
<filters>
<filter>-com.mkyongemma.config.** </filter>
</filters>
</configuration>
<goals>
<goal>instrument</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins> </build>
=== 2.解決策
問題は、 `mvn emma:emma`コマンドを直接実行すると、コマンド行「Emma plugin」が起動され、クラスがインストルメントされ、` pom.xml`ビルドセクションで宣言された他の "Emma plugin"次に、クラスを再インストルメントしようとします。
このエラーメッセージは、すでに装備されているクラスを計測しようとする2番目の "Emma plugin"からのものです。
__P.S Mavenのデバッグコマンド `mvn -X emma:emma`__を使ってプロセスを追跡してみてください
それを解決するには:
** 解決策1 ** あなたの `pom.xml`ビルドセクションから" emma-maven-plugin "を削除してください。 `mvn -X emma:emma`をもう一度実行してみてください。それは正常に動作し、 `$ {project} \ target \ site \ emma \`にコードカバレッジレポートを生成します。
** 解決策2 ** ビルドセクションに "emma-maven-plugin"を含める場合は、代わりに `mvn package`を使用して、" emma-maven-plugin "が2回実行されないようにしてください。
mvn package
=== 参考文献 . http://stackoverflow.com/questions/9502656/how-do-i-exclude-classes-from-being-instrumented-by-the-maven-emma-plugin[Stackoverflow : How do I exclude classes from being instrumented by the maven-emma plugin]. link://maven/how-to-display-maven-plugin-goals-and-parameters/[How To Mavenプラグインの目標とパラメータを表示]。 http://mojo.codehaus.org/emma-maven-plugin/index.html[Emma Maven プラグインの公式ページ]。 http://en.wikipedia.org/wiki/Apache__Maven[ウィキペディア - Apache Maven] リンク://タグ/コードカバレッジ/[コードカバレッジ]リンク://タグ/emma/[emma]link://tag/maven/[maven]