2017-02-01 2 views
0

Ich habe ein großes Maven Multiprojekt mit PowerMock-basierten Komponententests gebaut. Ich erzeuge ein "target/jacoco.exec" in den untergeordneten Modulen, mit Plugin-Konfiguration im übergeordneten Eltern-Pom für die untergeordneten Module. Ich habe ein zusätzliches untergeordnetes Modul, das nur "report-aggregate" verwendet und die verschiedenen untergeordneten Module als Abhängigkeiten angibt. Das alles funktioniert grundsätzlich.jacoco merge Ziel kann Dateien für untergeordnete Module nicht finden

Ich versuche jetzt, diese Daten mit SonarQube zu integrieren. Es scheint, dass die Version des SonarQube Java Analyzer, die installiert wird, nicht weiß, wie mit mehreren jacoco.exec-Dateien umzugehen ist, sie verarbeitet nur einen einzigen. Also versuche ich, das "Merge" -Ziel zum Funktionieren zu bringen. Ich lese die Dokumente zu diesem Ziel, aber ich mache offensichtlich nichts richtig, da es einfach nicht die Datendateien findet.

Im selben Kind-Modul, das ich „report-Aggregat“, ich habe folgendes bin mit:

  <plugin> 
      <groupId>org.jacoco</groupId> 
      <artifactId>jacoco-maven-plugin</artifactId> 
      <version>0.7.8</version> 
      <executions> 
       <execution> 
        <id>report-aggregate</id> 
        <phase>verify</phase> 
        <goals> 
         <goal>report-aggregate</goal> 
        </goals> 
       </execution> 
       <execution> 
        <id>merge</id> 
        <goals> 
         <goal>merge</goal> 
        </goals> 
        <configuration> 
         <fileSets> 
          <fileSet> 
           <directory>../childmodule1/target</directory> 
           <include>*.exec</include> 
          </fileSet> 
          <fileSet> 
           <directory>../childmodule2/target</directory> 
           <include>*.exec</include> 
          </fileSet> 
          ... several more 
         </fileSets> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 

Als ich lief „mvn saubere Installation“ von der obersten Ebene, ist es die schließlich verarbeitet „jacoco-Aggregat“ Kind-Modul und erzeugte die folgende Ausgabe:

[INFO] ------------------------------------------------------------------------ 
[INFO] Building jacoco-aggregate 2.3.0-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ jacoco-aggregate --- 
[INFO] Deleting ...\jacoco-aggregate\target 
[INFO] 
[INFO] --- jacoco-maven-plugin:0.7.8:merge (merge) @ jacoco-aggregate --- 
[INFO] Skipping JaCoCo merge execution due to missing execution data files 
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (filter) @ jacoco-aggregate --- 
[INFO] Using 'UTF-8' encoding to copy filtered resources. 
[INFO] skip non existing resourceDirectory ...\jacoco-aggregate\src\main\resources 
[INFO] 
[INFO] --- depends-maven-plugin:1.2:generate-depends-file (generate-depends-file) @ jacoco-aggregate --- 
[INFO] Created: ...\jacoco-aggregate\target\classes\META-INF\maven\dependencies.properties 
[INFO] 
[INFO] --- jacoco-maven-plugin:0.7.8:instrument (default-instrument) @ jacoco-aggregate --- 
[INFO] 
[INFO] --- jacoco-maven-plugin:0.7.8:restore-instrumented-classes (default-restore-instrumented-classes) @ jacoco-aggregate --- 
[INFO] 
[INFO] --- jacoco-maven-plugin:0.7.8:report (default-report) @ jacoco-aggregate --- 
[INFO] Skipping JaCoCo execution due to missing execution data file. 
[INFO] 
[INFO] --- maven-javadoc-plugin:2.10.4:jar (module-javadoc-jar) @ jacoco-aggregate --- 
[INFO] Not executing Javadoc as the project is not a Java classpath-capable package 
[INFO] 
[INFO] --- jacoco-maven-plugin:0.7.8:report-aggregate (report-aggregate) @ jacoco-aggregate --- 
[INFO] Loading execution data file ...\childmodule1\target\jacoco.exec 
[INFO] Loading execution data file ...\childmodule2\target\jacoco.exec 
... several more 
[INFO] Analyzed bundle 'childmodule1' with 1 classes 
[INFO] Analyzed bundle 'childmodule2' with 1 classes 

Wie Sie sehen können, ist es ausgeführt, um das „merge“ Ziel, aber es hat keine Datendateien finden, obwohl der späteren „Bericht -aggregate "Ziel hat.

Also ich nehme an, dass die Art, wie ich die Dateigruppen oder etwas damit verbunden bin, irgendwie falsch ist. Was könnte hier falsch sein?

+0

Haben Sie alle Module in Ihrem Elternteil Pom aufgelistet? unter Shek

+0

Versuchen Sie, \t \t \t \t \t \t \t prepare-Agent vor Bericht Ziel. – Shek

+0

Ich habe keine Module in der Eltern Pom aufgeführt, wie es nur ein Elternteil Pom ist, nicht ein Aggregator Pom. Ich habe einen separaten Aggregator Pom, der nur die zu erstellenden Module auflistet. Ich habe ein separates untergeordnetes Modul namens "jacoco-aggregate", das keine Module auflistet, aber die GAVs für die untergeordneten Module auflistet, die die jacoco.exec-Dateien erzeugen, die integriert werden müssen. –

Antwort

1

hatte ich zwei Probleme mit, wie ich das „merge“ Ziel wurde festgelegt wird:

  • Die Standard-Phase für „merge“ ist „generate-Ressourcen“. Ich kann mir nicht vorstellen, wie das jemals nützlich sein könnte, da ich nicht sehe, wie diese Dateien jemals vor dieser Phase erstellt werden könnten. Ich habe es auf "verify" geändert und das hat besser funktioniert.

  • In der Dateigruppe habe ich Verzeichnispfade relativ zu diesem untergeordneten Modul angegeben, als ich sie relativ zum Stamm des Projekts hätte angeben sollen. Ich entfernte die "../" von diesen Pfaden, und das behob dieses Problem.

Verwandte Themen