当前位置: 首页 > 工具软件 > emma-cli > 使用案例 >

艾玛(Emma)– x类似乎已被检测

江新
2023-12-01

查看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插件”并检测类,而接下来将启动在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

参考文献

  1. Stackoverflow:如何从Maven-emma插件检测类中排除类
  2. 如何显示Maven插件目标和参数
  3. Emma Maven插件官方页面
  4. 维基百科– Apache Maven

翻译自: https://mkyong.com/qa/emma-class-x-appears-to-be-instrumented-already/

 类似资料: