Плагин Jacoco Maven - выполнение плагинов, не охватываемых конфигурацией жизненного цикла
Я новичок в Maven и хочу использовать плагин Jacoco Maven для создания моих проектов.
Я установил пример проекта с TestNG единственной зависимостью.
Вот часть pom.xml:
<dependencies>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.8</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.6.2.201302030002</version>
<executions>
<execution>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>report</id>
<phase>prepare-package</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
И я получаю эту ошибку:
Выполнение плагина не распространяется на конфигурацию жизненного цикла: org.jacoco: jacoco-maven-
плагин: 0.6.2.201302030002: подготовка-агент (исполнение: по умолчанию, фаза: инициализация)
Что я делаю неправильно?
Приветствия
Ответы
Ответ 1
Вы можете игнорировать цель плагина, добавляя что-то вроде этого к вашему pom.xml
<pluginManagement>
<plugins>
<!--This plugin configuration is used to store Eclipse m2e settings only.
It has no influence on the Maven build itself.-->
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<versionRange>[0.5,)
</versionRange>
<goals>
<goal>prepare-agent</goal>
</goals>
</pluginExecutionFilter>
<action>
<!-- m2e doesn't know what to do with jacoco,
let ignore it or annoying error markers appear
see http://wiki.eclipse.org/M2E_plugin_execution_not_covered
-->
<ignore></ignore>
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
Ответ 2
Поскольку это связано с плагином Eclipse Maven, альтернативно это можно установить локально в настройках Eclipse. Перемещение конфигурации из проекта pom файла помогает коду прост и чист, без особых сведений о IDE.
Перейдите в Eclipse → Настройки → Maven → Отображения жизненного цикла. Добавьте lifecycle-mapping-metadata.xml
в следующем виде:
<?xml version="1.0" encoding="UTF-8"?>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<versionRange>[0.5,)</versionRange>
<goals>
<goal>prepare-agent</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
Перезагрузите файл сопоставлений жизненного цикла, а затем Maven
→ Update Project
Ответ 3
Eclipse теперь предлагает быстрое исправление, чтобы отключить предупреждение и сохранить его в пользовательских настройках (в Eclipse → Предпочтения → Maven → Отображение жизненного цикла lifecycle-mapping-metadata.xml, как указано @iker-aguayo) поэтому вам не нужно вручную создавать или редактировать файл. Это полезно в тех случаях, когда вы не можете обновить pom (например, используя проект с открытым исходным кодом, где вы не можете совершить.)
Ответ 4
В конечном итоге я решил игнорировать плагин и вместо этого использовать команду CLI mvn для теста с охватом кода.
Внутри вашей Eclipse IDE щелкните правой кнопкой мыши по предупреждению о красном цвете
jacoco-Maven-плагин. Вам нужно три варианта всплывающего окна, чтобы исправить это предупреждение, выберите игнорировать предупреждение, которое приведет к автоматически создаваемому разделу в вашем pom.xml, который начинается с строки комментариев,
<!--This plugin configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
В командной строке запустите команду mvn перед каждой проверкой, и это должно вызвать цель тестирования с охватом,
$mvn clean package
Ответ 5
Эта проблема специфична для Eclipse, так как изложена в вики M2E. Извините, я не могу помочь больше, потому что я не использую Eclipse.