Emma - Klasse x scheint bereits instrumentiert zu sein
Überprüfen Sie das "Maven-Emma-Plugin" inpom.xml
:
pom.xml
//... org.codehaus.mojo emma-maven-plugin 1.0-alpha-3 true process-classes instrument org.apache.maven.plugins maven-surefire-plugin true once xml ${project.build.directory}/generated-classes/emma/classes
1. Problem
Wenn ich den Befehlmvn emma:emma
ausführe, um den Code-Coverage-Bericht zu generieren, werden Sie aufgefordert, die x-Klasse bereits zu instrumentieren.
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.exampleemma.config.xxx] appears to be instrumented already -> [Help 1]
Versuchen Sie, die Problemklasse x vom Build auszuschließen, aber andere Klassen haben auch den gleichen instrumentierten Fehler bereits getroffen?
pom.xml
org.codehaus.mojo emma-maven-plugin 1.0-alpha-3 true process-classes -com.exampleemma.config.* instrument
2. Lösung
Das Problem ist, wenn Sie den Befehlmvn emma:emma
direkt ausführen, wird die Befehlszeile "Emma Plugin" gestartet und die Klassen instrumentiert, während das andere "Emma Plugin", das im Build-Abschnitt vonpom.xml
deklariert wurde, dies tut Beginnen Sie als nächstes und versuchen Sie erneut, die Klassen zu instrumentieren. Die Fehlermeldung kommt vom zweiten „Emma-Plugin“, das versucht, eine bereits instrumentierte Klasse zu instrumentieren.
P.S Try to trace the process behind with the Maven debug command `mvn -X emma:emma`
Um es zu lösen:
Solution 1
Entfernen Sie das "emma-maven-plugin" aus dem Build-Bereich vonpom.xml
. Versuchen Sie erneut,mvn -X emma:emma
auszuführen. Es sollte gut funktionieren und den Code-Coverage-Bericht bei${project} arget\site\emma\
generieren.
Solution 2
Wenn Sie das "emma-maven-plugin" in den Build-Abschnitt aufnehmen möchten, verwenden Sie stattdessenmvn package
, um zu vermeiden, dass das "emma-maven-plugin" zweimal ausgeführt wird.
mvn package