Maven Jacoco - многомодульный проект.Какая самая простая (централизованная?) Настройка? - PullRequest
0 голосов
/ 30 мая 2018

Для мультимодульного проекта Maven я могу сообщить о покрытии кода через плагин Jacoco Maven.Я знаю 2 рабочих подхода для этого.Первый подход я опишу ниже.Второй подход заключается в добавлении всех результатов jacoco модулей Maven в 1 файл jacoco.exec в корне проекта.

В обоих подходах мне нужно добавить плагин Jacoco в каждый модуль pom.xml.Также я должен добавить несколько строк в модуль и / или интегрированные тестовые плагины.Я знаю, что могу использовать родительский pom, чтобы немного сократить код.

Вопрос : действительно ли мне нужно добавить плагин jacoco (и модифицированные плагины surefire / failsave) в файл pom.xml каждого модуля?Можно ли определить в папке проекта плагин jacoco только один раз в корне проекта?

Хорошо, чтобы уточнить подход 1, это то, что я использую.

  1. Файл свойств проекта сонара в корне проекта.
sonar.projectKey=projectKey<br>
sonar.sources=all source files<br> 
sonar.exclusions=someFolders <br>
sonar.java.coveragePlugin=jacoco<br>
sonar.jacoco.reportPaths=module1/target/jacoco.exec,module2/target/jacoco.exsonar.projectName=projectName<br>
sonar.java.binaries=*/target/classes<br>

Основная часть Maven:

<build>
   <plugins>
      <plugin>
         <groupId>org.jacoco</groupId>
         <artifactId>jacoco-maven-plugin</artifactId>
         <version>${jacoco-maven-plugin-version}</version>
         <configuration>
            <propertyName>jacoco.agent.argLine</propertyName>
         </configuration>
         <executions>
            <execution>
               <id>jacoco-init</id>
               <goals>
                  <goal>prepare-agent</goal>
               </goals>
            </execution>
            <execution>
               <id>jacoco-site</id>
               <phase>verify</phase>
               <goals>
                  <goal>report</goal>
               </goals>
            </execution>
         </executions>
      </plugin>
      <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>${surefire.plugin.version}</version>
          <configuration>
             <argLine>${jacoco.agent.argLine}</argLine>
              <excludes>
                  <exclude>**/integration/**/*.java</exclude> 
                  <exclude>**/*$*.*</exclude>
              </excludes>
          </configuration>
      </plugin>
      <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-failsafe-plugin</artifactId>
           <version>${failsafe.plugin.version}</version>
           <configuration>
              <argLine>${jacoco.agent.argLine}</argLine>
              <reportsDirectory>${project.build.directory}/surefire-reports</reportsDirectory>
           </configuration>
           <executions>
             ...
           </executions>
       </plugin>
     </plugins>

1 Ответ

0 голосов
/ 01 июня 2018

Как уже упоминалось @Maxence Lecointe, вы можете просто добавить все плагины в родительский pom.Поместите плагины в раздел , а НЕ в раздел .

После сканирования многих решений я создал простой, но завершенный демонстрационный проект Jacoco , показывающий:

  • Многомодульный проект
  • Юнит тест (через mvnчистая установка)
  • интеграционный тест (с помощью mvn чистой установки -P интеграционный тест)
  • Jacoco - тестирование покрытия (как совокупного файла данных, так и совокупной отчетности)
  • FindBugs - качество кода

Наслаждайтесь демонстрационным проектом sipmle .

...