2013-07-06 46 views
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。当我想MVN润洁在构建POM安装,我得到这个异常:

[INFO] Can not execute Sonar 

Embedded error: Not a root project: [email protected] 
[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: [email protected] 
    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 

回答

0

为了运行声纳和聚集所有从父项目的结果,加上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界面浏览每个模块。

+0

我使用了这个标签,但我仍然有问题 – Pooya

+0

我已经在多模块项目中用sonar-maven-plugin-1.0和Maven 3.x测试了Maven 2.x和sonar-maven-plugin-2.0,并且两者都很好。你能否证实在任何子模块中没有声纳插件声明?它应该只在父pom中声明,因此每个孩子都会继承配置,但不会运行插件。 – edrabc