Многомодульный проект SonarQube maven

#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.