0

ソナー プラグインを含む親 pom ファイルがあり、ソナーで各子モジュールを個別に分析したい。これは親 pom での私のソナー定義です:

            <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>sonar-maven-plugin</artifactId>
            <version>1.0</version>
            <executions>
                <execution>
                    <id>running-sonar</id>
                    <goals>
                        <goal>sonar</goal>
                    </goals>
                    <phase>install</phase>
                </execution>
            </executions>
        </plugin>

親の pom モジュールを継承した 30 以上のモジュールと、すべてのモジュールを一緒にビルドする別の pom があります。ビルド pom で mvn clean install を実行しようとすると、次の例外が発生します。

[INFO] Can not execute Sonar

Embedded error: Not a root project: org.sonar.api.batch.bootstrap.ProjectDefinition@94347a9e
[INFO] ------------------------------------------------------------------------
[INFO] Trace
org.apache.maven.lifecycle.LifecycleExecutionException: Can not execute Sonar
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:719)
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:556)
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:535)
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387)
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348)
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
    at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60)
    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.classworlds.Launcher.launchEnhanced(Launcher.java:315)
    at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
    at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
    at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
Caused by: org.apache.maven.plugin.MojoExecutionException: Can not execute Sonar
    at org.codehaus.mojo.sonar.Bootstraper.executeMojo(Bootstraper.java:103)
    at org.codehaus.mojo.sonar.Bootstraper.start(Bootstraper.java:79)
    at org.codehaus.mojo.sonar.SonarMojo.execute(SonarMojo.java:88)
    at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490)
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694)
    ... 17 more
Caused by: java.lang.IllegalArgumentException: Not a root project: org.sonar.api.batch.bootstrap.ProjectDefinition@94347a9e
    at org.sonar.api.batch.bootstrap.ProjectReactor.<init>(ProjectReactor.java:36)
    at org.sonar.maven.SonarMojo.execute(SonarMojo.java:138)
    at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490)
    at org.codehaus.mojo.sonar.Bootstraper.executeMojo(Bootstraper.java:98)
    ... 21 more
4

1 に答える 1

2

ソナーを実行し、親プロジェクトからのすべての結果を集約するにinherited=falseは、親 pom にフラグを追加します。

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>sonar-maven-plugin</artifactId>
    <version>1.0</version>
    <inherited>false</inherited>
    <executions>
    ....

それ以外の場合、すべてのモジュールはソナーの実行を親およびプラグインの苦情として実行しようとします。

必要に応じて、他のモジュールの結果を集約せずに、モジュールから実行してそのコードベースのみmvn sonar:sonarを分析することもできます。ただし、Sonar の最新バージョンは、Web インターフェイスから各モジュールをナビゲートして、マルチモジュール プロジェクトを処理する準備ができています。

于 2013-07-06T17:54:46.647 に答える