Sonar缺少Maven模块之间的依赖关系

时间:2013-12-13 15:17:23

标签: java maven jenkins dependencies sonarqube

我已经搜索了与多模块maven项目和声纳相关的几个问题,但这些问题主要是关于聚合代码覆盖率指标。

我有一个由声纳分析的多模块maven项目。 如果我使用mvn sonar:sonar直接从终端运行分析,结果分析将在设计页面中显示maven模块之间的依赖关系。

但是,如果我通过Jenkins调用sonar-runner运行分析,结果分析将错过maven模块之间的依赖关系。

这是我设置声纳参数的顶级pom的片段:

<profile>
    <id>sonar</id>
    <activation>
        <activeByDefault>true</activeByDefault>
    </activation>
    <properties>
        <sonar.jdbc.url>
            jdbc:mysql://myhost:3306/sonar?useUnicode=true&amp;characterEncoding=utf8
        </sonar.jdbc.url>
        <sonar.jdbc.username>sonar</sonar.jdbc.username>
        <sonar.jdbc.password>sonar</sonar.jdbc.password>
        <sonar.host.url>http://myhost:9999</sonar.host.url>
        <sonar.java.source>1.7</sonar.java.source>
        <sonar.login>jenkins</sonar.login>
        <sonar.password>jenkins</sonar.password>
    </properties>
</profile>                

在Jenkins上,我将作业配置为在构建步骤中执行clean install -DskipTests=true,然后执行构建后操作以运行Sonar。

我正在使用Maven版本3.0.5,SonarQube版本3.7,Sonar Runner 2.3和Java 1.7.0_45。

了解我的配置中可能缺少什么?

2 个答案:

答案 0 :(得分:1)

SonarQube Maven引导程序确实依赖于Maven来获取依赖项(在模块或外部库上)。但SonarRunner无法访问此类信息,这就是为什么当您使用SonarRunner分析项目时,您无法获得有关外部依赖项的任何信息。

答案 1 :(得分:0)

好的,如果您使用的是Jenkins,则需要安装Sonar插件并设置参数。然后,您需要创建一个作业并运行maven目标:

clean install

之后,标记Sonar checkbok。运行你的工作,你应该看到你的代码覆盖率。

PS:如果你正在使用模块,那么你必须拥有所有模块的pom-root。