Я запускаю плагин 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>