Ich habe ein Maven-Multimodul-Projekt und verwende Jacoco-Maven für Berichte zur Codeabdeckung. Einige Klassen sollten nicht gemeldet werden, da sie Spring-Konfiguration sind und ich nicht an ihnen interessiert bin.
Ich habe das Maven-Jacoco-Plugin wie folgt deklariert:
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.2.201409121644</version>
<configuration>
<outputDirectory>${project.reporting.outputDirectory}/jacoco-ut</outputDirectory>
<exclude>some.package.*</exclude>
<exclude>**/*Config.*</exclude>
<exclude>**/*Dev.*</exclude>
<exclude>some/package/SomeClass.java</exclude>
</configuration>
<executions>
<execution>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>report</id>
<phase>prepare-package</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
<execution>
<id>post-unit-test</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
Das Problem ist, dass bei der Ausführung von mvn clean verify
jacoco immer noch Klassen gemeldet werden, die ausgeschlossen werden sollten, wie meine XML-Konfiguration zeigt. Wie kann ich es richtig konfigurieren?
quelle
Obwohl Andrew die Frage bereits mit Details beantwortet hat, gebe ich Code, wie man sie in pom ausschließt
Für Springboot-Anwendung
quelle
.class
Ende sein sollte , wie zum Beispiel:<exclude>**/*com/test/vaquar/khan/HealthChecker</exclude>
<exclude>com/mycompany/mypackage/**/*</exclude>
Eine andere Lösung:
Bitte beachten Sie, dass wir
"<element>PACKAGE</element>"
in der Konfiguration verwenden, die uns dann hilft, auf Paketebene auszuschließen.quelle
https://github.com/jacoco/jacoco/issues/34
Dies sind die verschiedenen Notationen für Klassen, die wir haben:
Agentenparameter, Ant-Aufgaben und Maven-Vorbereitungsagentenziel
Diese Spezifikationen erlauben Platzhalter * und?, Wobei * Platzhalter eine beliebige Anzahl von Zeichen, sogar mehrere verschachtelte Ordner.
Maven meldet Ziel
Diese Spezifikationen erlauben Ant-Dateispezifikationen wie Platzhalter *, ** und ?, Wobei * Platzhalter nur Teile eines einzelnen Pfadelements sind.
quelle
Verwenden Sie die Eigenschaft sonar.coverage.exclusions.
Dies sollte die Klassen von der Deckungsberechnung ausschließen.
quelle
Sie können den Ausschluss der Abdeckung in den Sonareigenschaften außerhalb der Konfiguration des Jacoco-Plugins konfigurieren:
und denken Sie daran, die Ausschlusseinstellungen aus dem Plugin zu entfernen
quelle
Hier ist das Arbeitsbeispiel in der
pom.xml
Datei.quelle