如何配置Sonar和Maven多级模块?

时间:2014-01-23 14:20:19

标签: sonarqube

我遇到了为声纳分析配置多级maven模块的问题。

它的工作正常,具有以下结构:

parent module
  |- level 1
       |- module with code to analyze

但是,如果我使用要分析的代码向模块添加深度,我将无法对其进行配置。

parent module
  |- level 1
       |- level 2
           |- module with code to analyze

我尝试了几种配置:

  1. 没有特殊配置: 我收到Can not execute SonarQube analysis: The project 'level 2' is already defined in SonarQube but not as a module of project 'level 1'. If you really want to stop directly analysing project 'level 2', please first delete it from SonarQube and then relaunch the analysis of project 'level 1'.错误。我不想在1级上启动,因为我在同一级别进行了集成测试,直接在父模块中。
  2. 在级别1和级别2上使用skippedModules属性:仅分析父模块。
  3. 使用includedModules指定“带分析代码的模块”:仅分析父模块。
  4. 有人知道如何处理它吗? (我的意思是不修改层级文件夹,这对其他一些要求非常有帮助)

    先谢谢

4 个答案:

答案 0 :(得分:1)

我找到了一个解决方法:   - 我在父项目上启动mvn clean install   - 然后我在'2级'模块发射声纳:声纳,我可以这样做,因为要分析的所有代码源都在同一个模块下。

至少它正在研究my sample project,但目前我还没有处理它让我的真实项目工作。

答案 1 :(得分:1)

构建我的Maven多模块项目一直在为我工作。我正在使用SonarQube v4.3。

我在父Maven项目的根级别放置了一个sonar-project.properties文件。

这里的内容是:

# Root project information
sonar.projectKey=<I used the project pom's groupId + artifactId>
sonar.projectName=<can be anything>
sonar.projectVersion=<I used the project pom's version>

# Some properties that will be inherited by the modules
sonar.sources=src

在我父项目的pom中,我声明了这个属性:

<sonar.language>java</sonar.language>

在同一个pom中,我声明了以下内容:

<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>sonar-maven-plugin</artifactId>
                <version>2.2</version>
            </plugin>
        </plugins>
    </pluginManagement>
</build>

我只构建父项目,这导致父项及其所有子项被SonarQube分析。我正在使用:

mvn clean install sonar:sonar

mvn sonar:sonar

答案 2 :(得分:0)

我认为你在SonarQube中有一个模块作为项目。首先,您需要将其删除,然后执行新的分析。

当项目已经存在但处于不同级别(项目,模块等)时会发生这种情况

答案 3 :(得分:0)

此行为与此JIRA相关:http://jira.codehaus.org/browse/SONAR-4245

唯一的解决方案是使用旧版的Sonar ..