Jacoco prepare-agent не генерирует файл jacoco.exec

Я запускаю плагин Jacoco Maven. Цель prepare-agent выполняется нормально, но по какой-то причине не генерирует файл jacoco.exec. Впоследствии цель report жалуется на Skipping JaCoCo execution due to missing execution data file.

Любые идеи?

Ответы

Ответ 1

Прочитав 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}, как описано здесь.

Ответ 2

Если вы не всегда запускаете 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>