Reputation: 11864
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
Upvotes: 1
Views: 12856
Reputation: 3392
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.
Upvotes: 5