2014-09-24 20 views
10

Sto provando a fare un semplice rapporto JaCoCo tramite Maven e continuo a ricevere lo stesso errore. Ecco uno snippet del mio plugin.Problemi con la configurazione di JaCoCo in MIO

<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> 

Quando eseguo mvn clean install jacoco:check ricevo il seguente

Impossibile eseguire obiettivo org.jacoco: jacoco-maven-plugin: 0.7.2.201409121644: controllare (default-CLI) sul progetto ### ########: I parametri 'regole' per obiettivo org.jacoco: jacoco-maven-plugin: 0.7.2.201409121644: assegno sono mancante o non valido -> [Aiuto 1]

ho ho provato a cambiare la versione da 0.6.3 a 0.7.2 e ogni versione in mezzo. Per quanto posso dire questo sembra una configurazione valida per una qualsiasi di quelle versioni sopra 0.6.3 ed è stato anche originariamente preso dai propri esempi trovati al link sottostante (Ho appena rimosso tutto tranne l'obiettivo di controllo):

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

Se corro con l'opzione -X ottengo il seguente stack trace:

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 

che cosa sto facendo di sbagliato?

risposta

11

Questo perché si avvia Maven con l'obiettivo esplicito:

mvn ... jacoco:check 

esecuzione in questo modo, la sezione <configuration> all'interno <execution> non leggere è; per farlo funzionare, utilizzare la fase di default Maven per cui l'obiettivo jacoco:check è legato, che è verify

mvn clean verify 

O, in alternativa, (ma non riesco a provare questo me stesso in questo momento e non sono sicuro al 100%), prova a utilizzare un prefisso default- negli ID di esecuzione, ad esempio:

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