2014-09-17 1 views
2

У меня есть вопрос, связанный с проектом с несколькими модулями maven с JaCoCo и SONAR.Многомодульный код Maven Project Coverage Issue on Sonar

У меня есть родительский и 3 дочерних модуля.

родитель | -child1 - pom.xml | -child2 - pom.xml | -child3 - pom.xml | -pom.xml

Я включил плагин JaCoCo в родительском pom.xml. Когда я запускаю mvn clean install sonar: sonar build из родительского pom.xml, я вижу, что каждый ребенок генерирует собственный файл jacoco.exec. Что-то вроде этого child1/target/jacoco.exec, child2/target/jacoco.exec и т. Д. Однако на родительском уровне не создается jacoco.exec.

Когда я запускаю свой анализ сонара, я вижу, что охват тестового блока отображается как 0,0% на приборной панели сонара.

Мой вопрос:
1. Что мне делать, чтобы увидеть покрытие для всего проекта?
2. Чтобы показать однополярное тестовое покрытие, отображает ли SONAR файл jacoco.exec с родительского уровня или с дочернего уровня?

Пожалуйста, помогите. Это действительно блокировщик дорог для меня. Цените все свои входы.

+0

Как я прочитал, у вас есть родительский POM, который также содержит блок модулей, это правильно? – user944849

+0

Правильно. Он имеет блок модулей. – user3810601

+0

Возможный дубликат [Как настроить мультимодульный Maven + Sonar + JaCoCo, чтобы дать объединенный отчет о покрытии?] (Http://stackoverflow.com/questions/13031219/how-to-configure-multi-module-maven-sonar- jacoco-to-give-merged-coverage-rep) – Fodder

ответ

1

Я столкнулся с аналогичной проблемой, то я включил следующие в каждом модуле пом XML, и она работала:

<!-- Sonar START --> 
     <sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin> 
     <sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis> 
     <sonar.jacoco.reportPath>${project.basedir}/../target/jacoco.exec</sonar.jacoco.reportPath> 
     <sonar.language>java</sonar.language> 
     <jacoco.version>0.7.9</jacoco.version> 
     <!-- Sonar START --> 

Плагины:

<!-- SONAR config START --> 
      <plugin> 
       <groupId>org.jacoco</groupId> 
       <artifactId>jacoco-maven-plugin</artifactId> 
       <version>${jacoco.version}</version> 
       <configuration> 
        <destFile>${sonar.jacoco.reportPath}</destFile> 
        <append>true</append> 
       </configuration> 
       <executions> 
        <execution> 
         <id>agent</id> 
         <goals> 
          <goal>prepare-agent</goal> 
         </goals> 
         <configuration> 
          <tasks> 
           <echo>Project Base Path (WEB):: ${project.basedir}</echo> 
           <echo>Jacoco exec target path (WEB):: ${sonar.jacoco.reportPath}</echo> 
          </tasks> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
      <plugin> 
       <groupId>org.sonarsource.scanner.maven</groupId> 
       <artifactId>sonar-maven-plugin</artifactId> 
       <version>3.2</version> 
      </plugin> 
      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>sonar-maven-plugin</artifactId> 
       <version>2.7</version> 
      </plugin> 
      <plugin> 
       <artifactId>maven-surefire-plugin</artifactId> 
       <version>2.19</version> 
       <configuration> 
        <argLine>${argLine}</argLine> 
       </configuration> 
      </plugin> 
      <!-- SONAR config END --> 

и настроить в Jenkins для «целей и вариантов "как:

sonar:sonar 

для запуска специальных тестов:

sonar:sonar -DfailIfNoTests=false -Dtest=<Test Class> test