Я запускаю плагин Jacoco Maven. Цель prepare-agent выполняется нормально, но по какой-то причине не генерирует файл jacoco.exec. Впоследствии цель report жалуется на Skipping JaCoCo execution due to missing execution data file.
Любые идеи?
Я запускаю плагин Jacoco Maven. Цель prepare-agent выполняется нормально, но по какой-то причине не генерирует файл jacoco.exec. Впоследствии цель report жалуется на Skipping JaCoCo execution due to missing execution data file.
Любые идеи?
Прочитав https://groups.google.com/forum/#!topic/jacoco/LzmCezW8VKA, выясняется, что prepare-agent устанавливает свойство surefire, называемое argLine. Если вы переопределите это свойство (что-то, что https://issues.apache.org/jira/browse/SUREFIRE-951 побуждает вас делать), то jacoco никогда не заканчивается.
Решение заключается в замене:
<argLine>-Dfile.encoding=${project.build.sourceEncoding}</argLine>
с
<argLine>-Dfile.encoding=${project.build.sourceEncoding} ${argLine}</argLine>
Значение, добавьте jacoco argLine к новому значению.
ОБНОВЛЕНИЕ. Как указано Fodder, если вы не всегда используете JaCoCo и другие плагины для плагинов ${argLine} то Maven будет жаловаться, что ${argLine} - undefined. Чтобы решить эту проблему, просто определите, что должно выглядеть ${argLine} при пропуске JaCoCo:
<properties>
<argLine/>
</properties>
В этом случае используйте @{argLine} вместо ${argLine}, как описано здесь.
Если вы не всегда запускаете JaCoCo при создании, тогда решение @Gili не работает, так как оно не может найти argLine. Вместо этого добавьте свойство argLine в POM с пользовательскими значениями. Агент подготовки JaCoCo добавит к этому свойству, и Surefire будет использовать прилагаемую argLine.
<properties>
<argLine>whatever your custom argline variables are</argLine>
</properties>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<!-- Don't put argLine config here! -->
</plugin>
</plugins>