19

我是 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-plugin:0.6.2.201302030002:prepare-agent(执行:默认,阶段:初始化)

我究竟做错了什么 ?干杯

4

5 回答 5

19

您可以忽略插件目标,将这样的内容添加到您的 pom.xml

<pluginManagement>
        <plugins>
            <!--This plugin's 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's 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>
于 2014-04-17T13:29:00.497 回答
16

由于这与 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

于 2016-01-07T22:41:29.420 回答
0

Eclipse 现在提供了一个快速修复来禁用警告并将其保存在用户首选项中(在 Eclipse --> Preferences --> Maven --> Lifecycle Mappings lifecycle-mapping-metadata.xml 中,如 @iker-aguayo 所述)所以你不要不必手动创建或编辑文件。这在您无法更新 pom 的情况下很有用(例如使用无法提交的开源项目。)

于 2017-05-04T15:12:45.337 回答
-1

我最终选择忽略插件并使用 CLI mvn 命令代替代码覆盖率的测试。

在 Eclipse IDE 中,右键单击 jacoco-maven-plugin 的红色警告。您应该在弹出窗口中使用三个选项来修复警告,选择忽略警告,这将导致您的 pom.xml 中自动生成一个以一行注释开头的部分,

<!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->

在命令行中,在每次签入之前运行 mvn 命令,这应该会触发覆盖率的测试目标,

$mvn clean package  
于 2017-02-08T20:38:28.420 回答
-2

如M2E wiki 中所述,此问题是 Eclipse 特有的。抱歉,我无能为力,因为我不使用 Eclipse。

于 2013-02-13T03:18:45.673 回答