#maven #sonarqube #sonar-runner
#maven #SonarQube #sonar-runner
Вопрос:
У меня есть следующая структура для проекта 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
Мой конвейер Дженкинса :
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
Комментарии:
1. Сначала измените структуру вашего проекта и сделайте родительский элемент корнем вашего проекта и всех его дочерних модулей. Во-вторых, я настоятельно рекомендую использовать sonar-maven-plugin , который упрощает всю конфигурацию… (вы можете полностью исключить sonar-project.properties)… Наличие родительского элемента, который содержит
<module>../module..</module>
, — это запах…
Ответ №1:
Вы пропустили добавление двух обязательных свойств анализа сонара.
Это два: -Dsonar.sources=src
и -Dsonar.java.binaries=**/*
Вы можете указать оба свойства на шаге Дженкинса, например
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.