I’m in a bit of an argument with a colleague.
He wants to put sonar.java.spotbugs.reportPaths
on the mvn
command in the Jenkins pipeline library (so it will be the same for all projects, single module and multi-module), like this:
sh "mvn -Dsonar.java.spotbugs.reportPaths=\"target/spotbugs.xml\" sonar:sonar"
I, on the other hand, want to have that value in the pom.xml
, like this:
<properties>
<sonar.java.spotbugs.reportPaths>${project.build.directory}/spotbugs.xml</sonar.java.spotbugs.reportPaths>
</properties>
and then the Maven command simply becomes
sh "mvn sonar:sonar"
Not just that, I also want this property to go in the parent POM, so it doesn’t have to be defined in each and every pom.xml
.
An additional argument I have is, if we put sonar.java.spotbugs.reportPaths
on the commandline, then we also have to do it for:
sonar.java.pmd.reportPaths
sonar.java.checkstyle.reportPaths
sonar.dependencyCheck.htmlReportPath
sonar.dependencyCheck.reportPath
sonar.clirr.reportPath
sonar.jacoco.reportPath
sonar.japicmp.xmlReportPath
(which we all use).
And it’s not just that, I think we don’t even have to define these values at all, as long as a plugin is active in SonarQube, it will look for the report files in the default locations, and you only have to tell it when they are not on the default locations.
Who is right here?
Who can settle our argument?