【问题标题】:SonarQube multi module maven projectSonarQube 多模块 Maven 项目
【发布时间】:2021-02-09 19:16:12
【问题描述】:

我有一个 Maven 项目的以下结构:

sonar-project.properties
Jenkinsfile
parent
->parent
->->pom.xml
->module1
->->pom.xml
->module2
->->pom.xml
->module3
->->pom.xml

pom 父母:

<modules>
    <module>../module1</module>
    <module>../module2</module>
    <module>../module3</module>
</modules>

sonar-project.properties:

sonar.sourceEncoding=UTF-8
sonar.projectKey=com.company.project:parent

#List of module identifiers
sonar.modules=../module1,../module2,../module3

#module1 settings
module1.sonar.projectName=com.company.project:module1
module1.sonar.sources=src/main/java

#module2 settings
module2.sonar.projectName=com.company.project:module2
module2.sonar.sources=src/main/java

#module3 settings
module3.sonar.projectName=com.company.project:module3
module3.sonar.sources=src/main/java

我的 Jenkins 管道是:

steps {
    script {
        dir('parent') {
            withSonarQubeEnv('SONAR') {
                sh "sonar-scanner -Dproject.settings=../sonar-project.properties -Dsonar.version=${params.buildVersion} -Dsonar.projectVersion=${params.projectVersion}"
            }
        }
    }
}

我有这个错误:

ERROR: You must define the following mandatory properties for 'com.company.project:parent:../module1': sonar.sources

【问题讨论】:

  • 首先改变你的项目结构,让父模块成为你项目的根,所有模块都是它的子模块。其次,我强烈建议使用sonar-maven-plugin,这使得整个配置更容易......(你可以完全省略sonar-project.properties)......拥有一个包含&lt;module&gt;../module..&lt;/module&gt;的父级是一种气味......跨度>

标签: maven sonarqube sonar-runner


【解决方案1】:

您错过了添加两个强制性声纳分析属性。

这两个是:-Dsonar.sources=src 和 -Dsonar.java.binaries=**/*

您可以在 Jenkins 步骤中提及这两个属性,例如

sh "sonar-scanner -Dproject.settings=../sonar-project.properties -Dsonar.version=${params.buildVersion} -Dsonar.projectVersion=${params.projectVersion} -Dsonar.sources=src -Dsonar.java.binaries=**/*"

或者

您可以将它们包含在sonar-project.properties 中

sonar.sourceEncoding=UTF-8
sonar.projectKey=com.company.project:parent
sonar.sources=src
sonar.java.binaries=**/*

#List of module identifiers
sonar.modules=../module1,../module2,../module3

#module1 settings
module1.sonar.projectName=com.company.project:module1
module1.sonar.sources=src/main/java

#module2 settings
module2.sonar.projectName=com.company.project:module2
module2.sonar.sources=src/main/java

#module3 settings
module3.sonar.projectName=com.company.project:module3
module3.sonar.sources=src/main/java

注意:sonar.java.binaries 对于分析 maven 项目很重要。

【讨论】:

    猜你喜欢
    • 2017-10-11
    • 1970-01-01
    • 2016-07-26
    • 2016-03-07
    • 2017-01-10
    • 2018-02-06
    • 1970-01-01
    • 1970-01-01
    • 2011-01-04
    相关资源
    最近更新 更多