Automatically derive mandatory SonarQube properties from pom file in Jenkins
The documentation (although slightly confusing, see edit below) explains how to use a generic post-build step (leveraging environment variables), instead of the deprecated post-build action. in short:
- install latest SonarQube Plugin (v2.4 as of now) in Jenkins
- in System Config under SonarQube servers: check
Enable injection of SonarQube server configuration as build environment variables
- in the configuration of your Maven project:
- check
Prepare SonarQube Scanner environment
- add a post-build step
Invoke top-level Maven targets
and leverage the injected environment variables in theGoals
field e.g.:$SONAR_MAVEN_GOAL -Dsonar.host.url=$SONAR_HOST_URL -Dsonar.login=$SONAR_AUTH_TOKEN
- check
Edit: when the documentation says The Post-build Action for Maven analysis is deprecated.
, it refers to the old post-build action which is not documented anymore. The paragraph after that warning (summarized in this answer) really is the recommended procedure. Illustration here if it's still not clear.
Using SonarQube Scanner as a post build step you can configure it with at least this properties in Analysis properties:
sonar.projectKey=${POM_ARTIFACTID}sonar.projectName=${POM_DISPLAYNAME}sonar.projectVersion=${POM_VERSION}sonar.sources=srcsonar.java.binaries=targetsonar.language=javasonar.sourceEncoding=UTF-8
POM_* variables are mapped by Jenkins from Maven GAV info, look here: https://github.com/jenkinsci/jenkins/pull/933/files