简体   繁体   中英

SonarQube multi module maven project

I have the following structure for a maven project:

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

pom parent:

<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

My Jenkins pipeline is :

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

I have this error:

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

You have missed to add two mandatory sonar analysis properties.

Those two are: -Dsonar.sources=src and -Dsonar.java.binaries=**/*

You can mention both the properties in the Jenkins step like

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

Or

You can include them in sonar-project.properties like

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

Note: sonar.java.binaries is important for analysis of maven projects.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM