2014-02-07 12 views
15

Ich benutze Jacocos Maven Plugin. Das Ziel prepare-agent läuft gut, aber aus irgendeinem Grund jacoco.exec Datei nicht generiert. Anschließend beklagt sich das report Ziel Skipping JaCoCo execution due to missing execution data file.jacocos preparate-agent erzeugt keine jacoco.exec Datei

Irgendwelche Ideen?

Antwort

30

Nach dem Lesen https://groups.google.com/forum/#!topic/jacoco/LzmCezW8VKA stellt sich heraus, dass prepare-agent eine todsichere Eigenschaft namens argLine setzt. Wenn Sie diese Eigenschaft überschreiben (was Ihnen https://issues.apache.org/jira/browse/SUREFIRE-951 nahelegt), dann wird jacoco niemals ausgeführt.

Die Lösung ist zu ersetzen:

<argLine>-Dfile.encoding=${project.build.sourceEncoding}</argLine> 

mit

<argLine>-Dfile.encoding=${project.build.sourceEncoding} ${argLine}</argLine> 

Bedeutung, jacoco des argLine auf den neuen Wert anhängen.

UPDATE: Wie Fodder wies darauf hin, wenn Sie JaCoCo und kein anderes Plugin nicht immer laufen setzt ${argLine} dann Maven beklagen, dass ${argLine} nicht definiert ist. Um dies zu beheben, definieren Sie einfach, was ${argLine} aussehen sollte, wenn JaCoCo übersprungen:

<properties> 
    <argLine/> 
</properties> 

In diesem Fall verwenden Sie @ {argLine} anstelle von $ {} argLine als here erklärt.

+0

Ich würde hinzufügen, dass es nur benötigt wird, wenn Sie die Konfiguration von ArgLine für todsichere Plugin ändern. Ansonsten ist die Standardkonfiguration in Ordnung. – shevchyk

+2

Wenn Sie Tycho (für Eclipse-Plugins und -Anwendungen) verwenden, verwenden Sie $ {tycho.testArgLine} anstelle von $ {argLine}. – n8n8baby

+1

danke danke danke! –

0

Wenn Sie JaCoCo nicht immer beim Erstellen ausführen, funktioniert @ Gili's Lösung nicht, da argLine nicht gefunden werden kann. Fügen Sie stattdessen eine Eigenschaft argLine in Ihrem POM mit den benutzerdefinierten Werten hinzu. Der Prepared-Agent von JaCoCo wird an diese Eigenschaft angehängt, und Surefire verwendet die angehängte ArgLine.

<properties> 
    <argLine>whatever your custom argline variables are</argLine> 
</properties> 

<plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-surefire-plugin</artifactId> 
     <!-- Don't put argLine config here! --> 
    </plugin> 
</plugins> 
+0

Ja, das stimmt. Sie benötigen eine spezielle Handhabung, wenn JaCoCo deaktiviert ist, aber ich habe es anders gehandhabt. Ich habe meine Antwort entsprechend aktualisiert. – Gili