Я пытаюсь разделить генерацию анализа покрытия jacoco для моих модульных тестов.
Я создал (в своем pom.xml) специальный профиль для него, потому что я не хочу запускать тесты во всех моих средах.
Это раздел профиля в моем pom.xml:
<profile>
<id>unit-tests</id>
<activation>
<property>
<name>env.SPRING_BOOT_ACTIVE_PROFILE</name>
<value>!prod</value>
</property>
</activation>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
<!--embedded tomcat server (needed to run tests)-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<!-- Code coverage plugin -->
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.2</version>
<executions>
<!--
Prepares the property pointing to the JaCoCo runtime agent which
is passed as VM argument when Maven the Surefire plugin is executed.
-->
<execution>
<id>pre-unit-test</id>
<goals>
<goal>prepare-agent</goal>
</goals>
<configuration>
<!-- Sets the path to the file which contains the execution data. -->
<destFile>${jacoco.ut.execution.data.file}</destFile>
<!--
Sets the name of the property containing the settings
for JaCoCo runtime agent.
-->
<propertyName>surefireArgLine</propertyName>
</configuration>
</execution>
<!--
Ensures that the code coverage report for unit tests is created after
unit tests have been run.
-->
<execution>
<id>post-unit-test</id>
<goals>
<goal>report</goal>
</goals>
<configuration>
<!-- Sets the path to the file which contains the execution data. -->
<dataFile>${jacoco.ut.execution.data.file}</dataFile>
<!-- Sets the output directory for the code coverage report. -->
<outputDirectory>${project.reporting.outputDirectory}/jacoco-ut</outputDirectory>
</configuration>
</execution>
<!--
Prepares the property pointing to the JaCoCo runtime agent which
is passed as VM argument when Maven the Failsafe plugin is executed.
-->
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<!-- this dependency is only needed to fix a bug in open jdk 8 (test)-->
<useSystemClassLoader>false</useSystemClassLoader>
<argLine>${surefireArgLine}</argLine>
</configuration>
</plugin>
</plugins>
</build>
</profile>
Первые команды запуска в этом порядке
мвн чистый
тест mvn
mvn jacoco: отчет
после запуска команды mvn test, jacoco генерирует файл, содержащий информацию о корректном покрытии в позиции, указанной свойством "jacoco.ut.execution.data.file"
но когда я запускаю команду mvn jacoco: report, я получаю эту ошибку
--- jacoco-maven-plugin:0.8.2:report (default-cli) @ springbootseed ---
Skipping JaCoCo execution due to missing execution data file.
Я пытался удалить строку
<destFile>${jacoco.ut.execution.data.file}</destFile>
из конфигурации выполнения агента подготовки, и таким образом jacoco записывает файл в папку по умолчанию (target / jacoco.exec)
При такой настройке jacoco правильно выбирает файл и генерирует отчет в расположении по умолчанию (site / jacoco).
По этим причинам я думаю, что jacoco не выбирает конфигурацию из pom при запуске mvn jacoco: report
как я могу это исправить?
Заранее спасибо