具有非标准目录结构的maven多模块项目的声纳分析

时间:2013-07-16 04:37:15

标签: maven build sonarqube

我正在努力为一个项目做好准备。代码库开始膨胀,需要将其拆分为多个模块。但是,我们已经有一个有点专有的部署过程,并且目录结构不能因为Maven方式而受到损害。

简化结构如下:

  /workspace/basesrc/
                    |_ superpom.xml
                    |_ com/company/parentpkg/
                                          |_ ModuleA/
                                                    |_ pom.xml
                                                    |_SubAModuleA/
                                                                 |_ SubAModuleAClass.java
                                                                 |_ pom.xml
                                                    |_SubAModuleB/
                                                                 |_ SubAModuleBClass.java
                                                                 |_ pom.xml
                                          |_ ModuleB/
                                                    |_ ModuleBClass.java
                                                    |_ pom.xml

我能够使用以下设置构建项目:

接近A

(superpom.xml):

<build>
  <sourceDirectory>.</sourceDirectory>
</build>

这是由子模块继承的,实际上只构建其当前目录。

然而,如果出现此主题中所述的情况,Sonar似乎无法解析包名称:mvn sonar:sonar throws exception while doing Java AST scan

方法B :指定根源目录并使用maven编译器包含,如下所述:http://maven.apache.org/guides/mini/guide-using-one-source-directory.html

(superpom.xml)

<build>
  <sourceDirectory>/workspace/basesrc/</sourceDirectory>
</build>

(SubAModuleA pom.xml)

<build>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <includes><include>com/company/parentpkg/ModuleA/SubAModuleA/**/*.java</include></includes>
        </configuration>
      </plugin>
    </plugins>
  </build>

同样,这适用于maven构建的情况。但是,尽管从子模块目录运行/workspace/basesrc/,Sonar似乎还包括整个mvn sonar:sonar文件夹。

我的问题是,

如果我使用方法A,有没有办法配置/覆盖Sonar Maven Plugin搜索Java源文件的根目录属性?它可以与$ {project.build.sourceDirectory} maven属性不同吗?

使用方法B,Sonar如何配置为仅分析maven-compiler-plugin正在构建的内容?

2 个答案:

答案 0 :(得分:1)

对于有兴趣的人,只需重申<sonar.includes>必须放在<properties>下,而不是<configuration>下的<plugin>。并且声纳必须是3.5版本。

答案 1 :(得分:0)

好吧,我认为以下内容可以帮助您设置项目:http://maven.apache.org/guides/mini/guide-using-one-source-directory.html

参见以下部分:

  

从单一源目录生成多个唯一JAR

请理解,这不是应该在maven中设置的方式,因为你违反惯例,这使得maven如此强大。另一方面,我理解在某些项目中,没有选择将源结构更改为maven惯例所说的方式。