2016-06-28 15 views
1

In einem übergeordneten POM haben wir Jacoco-Regeln eingerichtet, um die Testabdeckung zu erzwingen. Dazu gehören auch einige Ausschlüsse für Klassen, die Verhalten der Regel nicht:Wie können Sie Jacoco-Ausschlüsse in einem untergeordneten Projekt hinzufügen?

<execution> 
    <id>default-check</id> 
    <goals> 
     <goal>check</goal> 
    </goals> 
    <configuration> 
     <excludes> 
      <!-- exclude largely auto-generated domain and model classes --> 
      <exclude>**/model/*.class</exclude> 
      <exclude>**/model/**/*.class</exclude> 
      <exclude>**/domain/*.class</exclude> 
      <exclude>**/domain/**/*.class</exclude> 
      <exclude>**/dto/*.class</exclude> 
      <exclude>**/dto/**/*.class</exclude> 
     </excludes> 
     <rules> 
      <rule> 
       <element>BUNDLE</element> 
       <limits> 
        <limit implementation="org.jacoco.report.check.Limit"> 
         <counter>INSTRUCTION</counter> 
         <value>COVEREDRATIO</value> 
         <minimum>0.70</minimum> 
        </limit> 
       </limits> 
      </rule> 
     </rules> 
    </configuration> 
</execution> 

Bei einem Kind POM, die diese Eltern verwendet, was die Maven Magie für das Hinzufügen zusätzlicher ausgeschlossen Klasse Muster?

Ich versuche, combine... Attribute auf verschiedene Arten zu verwenden, aber ich bin nicht in der Lage, die effektive POM zu bekommen, um richtig herauskommen.

Irgendwelche Ideen?

Antwort

0

Sie können die Liste nicht erweitern, aber Sie können sie überschreiben. Meistens möchten Sie eine bestimmte Liste von Ausschlüssen pro Modul (wie oft haben Sie die gleichen Typen in verschiedenen Modulen?)

Um dies zu tun, keine Ausschlüsse in die Eltern POM. Legen Sie einfach die standard/shared Ausführungen und ihre Konfiguration hinein. Im Kind POM:

<build> 
    <pluginManagement> 
     <plugins> 
      <plugin> 
       <groupId>org.jacoco</groupId> 
       <artifactId>jacoco-maven-plugin</artifactId> 

       <configuration> 
        <excludes> 
         <exclude>ch/swissquant/toolbox/exceptions/**/*.class</exclude> 
         <exclude>ch.swissquant.toolbox.exceptions.*</exclude> 
        </excludes> 
       </configuration> 
      </plugin> 
     </plugins> 
    </pluginManagement> 
</build> 

Maven wird diese Konfiguration lesen und verschmelzen sie mit jeder Ausführung es in der übergeordneten POM findet (so wird es für alle Schritte des komplizierten Jacoco Verfahren angewendet werden).

Die Zusammenführung funktioniert so: Maven liest das Eltern POM und überschreibt es dann mit irgendwelchen bestimmten Werten aus dem Kind POM (letzter Eintrag gewinnt). Dies gilt auch für Eigenschaften, sodass Sie Standardwerte für Dinge wie die Deckungszuteilungen im übergeordneten Objekt mithilfe von Eigenschaften definieren und die Eigenschaften im untergeordneten Element neu definieren können.

Sie können dies durch Ausführen von mvn help:effective-pom überprüfen.