2014-09-24 40 views
10

我想通过Maven做一个简单的JaCoCo报告,并且我一直得到相同的错误。这是我的插件的一个片段。在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 clean install jacoco:check我得到以下

未能执行目标org.jacoco:jacoco - Maven的插件:0.7.2.201409121644:检查(缺省CLI)项目### ########:参数 '规则' 为目标org.jacoco:jacoco - Maven的插件:0.7.2.201409121644:支票丢失或无效的 - > [求助1]

我已经试图将版本从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 

我到底做错了什么?

回答

11

这是因为你启动行家与明确的目标:

mvn ... jacoco:check 

运行这个样子,里面<execution><configuration>部分是不能读取;使它工作,使用默认的Maven阶段该jacoco:check目标绑定,这是verify

mvn clean verify 

,或者,(但我不能这样,现在尝试自己,我不是100%确定),尝试在执行ID中使用前缀default-,如:

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