2016-04-13 1 views
3

J'ai plusieurs niveaux de projets Maven imbriqués, où chaque module peut participer aux tests d'intégration globale. Pour avoir une couverture module global, multi, j'ai configuré jacoco à utiliser et partager le même fichier accross modules, en utilisant la variable Maven ${session.executionRootDirectory}:

<execution> 
    <id>pre-integration-test</id> 
    <phase>pre-integration-test</phase> 
    <goals> 
     <goal>prepare-agent-integration</goal> 
    </goals> 
    <configuration> 
     <propertyName>jacoco.failsafeArgLine</propertyName> 
     <destFile>${session.executionRootDirectory}/target/jacoco-it.exec</destFile> 
    </configuration> 
</execution> 

De cette façon, le même fichier de données est utilisé par chaque module, peu importe à quel point il est imbriqué dans les sous-modules. J'ai vérifié, un fichier de données correct est généré par jacoco lors du lancement de "mvn clean install".

Le problème apparaît maintenant lors du lancement de mvn sonar:sonar. Il semble que le plugin ne puisse pas remplacer cette variable par le vrai chemin. Je peux voir ce qui suit dans les journaux

[INFO] JaCoCoItSensor: JaCoCo IT report not found: /home/tomcat/.jenkins/jobs/MYJOB/workspace/${session.executionRootDirectory}/target/jacoco-it.exec 

Il ne fonctionne pas mieux lors de l'utilisation @{session.executionRootDirectory}.

Une solution de contournement?

Répondre

0

Après a comment in this bug report at SonarSource, conseiller d'utiliser la configuration suivante:

<plugin> 
    <groupId>com.github.goldin</groupId> 
    <artifactId>properties-maven-plugin</artifactId> 
    <version>0.2.5</version> 
    <executions> 
     <execution> 
      <id>set-sonar.jacoco.reportPath</id> 
      <goals> 
       <goal>set-properties</goal> 
      </goals> 
      <phase>initialize</phase> 
      <configuration> 
       <rawProperties> 
        sonar.jacoco.itReportPath = ${session.executionRootDirectory}/target/jacoco-it.exec 
       </rawProperties> 
       <addDollar>true</addDollar> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

... qui était malheureusement pas compatible avec Maven 3.1+, je l'ai utilisé et construit à partir de sources that fork, puis j'ai pu faire tout fonctionner correctement avec Maven 3.2.3.