web-dev-qa-db-ja.com

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-plugin:0.7.2.201409121644:check(default-cli)の実行に失敗しました:目標org.jacoco:jacocoのパラメーター「ルール」 -maven-plugin: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

私は何が間違っているのですか?

15
Dubius

これは、明示的な目標を設定してMavenを起動するためです。

mvn ... jacoco:check

このように実行すると、<configuration>内の<execution>セクションは読み取られません。これを機能させるには、jacoco:checkゴールがバインドされているデフォルトのMavenフェーズであるverifyを使用します。

mvn clean verify

または、代わりに(ただし、現時点ではこれを自分で試すことはできず、100%確信が持てません)、実行IDで次のようにdefault-プレフィックスを使用してみてください。

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