当前位置: 首页 > 知识库问答 >
问题:

在maven中配置JaCoCo时出错

宣冥夜
2023-03-14

我试图通过Maven做一个简单的JaCoCo报告,但我总是得到同样的错误。这是我的插件的一个片段。

<plugin>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
    <version>0.7.2.201409121644</version>
    <executions>
        <execution>
            <id>jacoco-check</id>
            <goals>
                <goal>check</goal>
            </goals>
            <configuration>
                <rules>
                    <rule>
                        <element>PACKAGE</element>
                        <limits>
                            <limit>
                                <counter>LINE</counter>
                                <value>COVEREDRATIO</value>
                                <minimum>0.01</minimum>
                            </limit>
                        </limits>
                    </rule>
                </rules>
            </configuration>
        </execution>
    </executions>
</plugin>

当我运行mvn净安装雅各科:检查时,我得到以下信息

无法执行目标org.jacoco:Jacoco-maven-plugin:0.7.2.201409121644:检查(default-cli)项目 ###########: 目标org.jacoco的参数'规则':Jacoco-maven-plugin:0.7.2.201409121644:检查丢失或无效-

我尝试将版本从0.6.3更改为0.7.2以及介于两者之间的每个版本。据我所知,对于0.6.3以上的任何版本,这看起来都是有效的配置,甚至最初取自以下链接中的示例(我刚刚删除了除检查目标之外的所有内容):

http://www.eclemma.org/jacoco/trunk/doc/maven.html

如果使用-X选项运行,则会得到以下堆栈跟踪:

org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.jacoco:jacoco-maven-plugin:0.7.2.201409121644:check (default-cli) on project science-open: The parameters 'rules' for goal org.jacoco:jacoco-maven-plugin:0.7.2.201409121644:check are missing or invalid
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:220)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:108)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:76)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:116)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:361)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:155)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:584)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:213)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:157)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
    at org.codehaus.classworlds.Launcher.main(Launcher.java:46)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
Caused by: org.apache.maven.plugin.PluginParameterException: The parameters 'rules' for goal org.jacoco:jacoco-maven-plugin:0.7.2.201409121644:check are missing or invalid
    at org.apache.maven.plugin.internal.DefaultMavenPluginManager.populatePluginFields(DefaultMavenPluginManager.java:584)
    at org.apache.maven.plugin.internal.DefaultMavenPluginManager.getConfiguredMojo(DefaultMavenPluginManager.java:537)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:120)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
    ... 25 more

我做错了什么?

共有2个答案

薛文斌
2023-03-14

我也有同样的问题。为了解决这个问题,我在覆盖率检查执行中添加了阶段标记:

<id>coverage-check</id>
<phase>test</phase>
<goals>
     <goal>check</goal>
</goals>

现在,每次运行“mvn clean package”命令时,都会执行覆盖率检查。

石喜
2023-03-14

这是因为您启动maven的目标很明确:

mvn ... jacoco:check

像这样运行,

mvn clean verify

或者,(但我现在无法亲自尝试,我也不能100%确定),尝试在执行ID中使用default-前缀,例如:

   <execution>
        <id>default-jacoco-check</id>
        <goals>
            <goal>check</goal>
        </goals>
        [...]
   </execution>

 类似资料:
  • 我的电脑上安装了Windows 7。我下载了XAMPP服务器,并用它的默认选项安装了它。然而,我注意到Tomcat不起作用(MySQL和Apache确实起作用!)。我试图在XAMPP中配置Tomcat,但出现以下错误。 11: 47:40 AM[Tomcat]检测到问题<“C:\oraclexe\app\oracle\product\10.2.0\server\BIN\tnslsnr.exe”正在

  • 我正在尝试从命令行配置JaCoCo maven插件,而不是使用。到目前为止,我已经设法使用命令执行: 输出: 这将创建 文件,现在我正在尝试运行阶段,但我无法为此阶段设置属性。我正在运行命令: 或 与jacoco:report中一样,没有与jacoco:prepare代理中相同。 我有这样的输出: 使用默认值。

  • 我们有以下情况:我们有单元测试和集成测试。单元测试类以结束,集成测试以结束。为了在Maven build中只执行单元测试,我们使用以下配置:

  • 这些答案中没有一个能够产生我想要的结果:如果一个类在堆栈更高的测试中被使用,比如DAOs使用的实体,那么这个类就会被覆盖,即使它没有被它自己的模块中的测试完全覆盖。 是否有一个明确的配置某处,以实现这一点,请?

  • 我的代理配置是: 为什么这样?他们的jms配置有问题吗?请引导我。

  • 我试图使用maven中的jacoco插件为我正在进行的一个多模块项目生成代码覆盖率报告。 我在我的父母pom中添加了以下内容。构建标记中的xml。 在运行mvn verify时,会在“project root\module\target\site\jacoco\”处为每个模块生成相应的jacoco报告 是否可以在项目根目录下生成包含每个模块的测试覆盖率详细信息的综合jacoco报告? 请建议合并各