Для мультимодульного проекта Maven я могу сообщить о покрытии кода через плагин Jacoco Maven.Я знаю 2 рабочих подхода для этого.Первый подход я опишу ниже.Второй подход заключается в добавлении всех результатов jacoco модулей Maven в 1 файл jacoco.exec в корне проекта.
В обоих подходах мне нужно добавить плагин Jacoco в каждый модуль pom.xml.Также я должен добавить несколько строк в модуль и / или интегрированные тестовые плагины.Я знаю, что могу использовать родительский pom, чтобы немного сократить код.
Вопрос : действительно ли мне нужно добавить плагин jacoco (и модифицированные плагины surefire / failsave) в файл pom.xml каждого модуля?Можно ли определить в папке проекта плагин jacoco только один раз в корне проекта?
Хорошо, чтобы уточнить подход 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>