查看pom.xml
的“ maven-emma-plugin”:
<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,但是其他类也遇到了相同的已检测错误?
<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插件”并检测类,而接下来将启动在pom.xml
构建部分中声明的另一个“ Emma插件”并尝试再次对这些类进行检测。 该错误消息来自第二个“ Emma插件”,该插件试图检测已检测的已经存在的类。
PS尝试使用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”运行两次。
mvn package
参考文献
翻译自: https://mkyong.com/qa/emma-class-x-appears-to-be-instrumented-already/