2014-09-24 1093 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>