Automatically derive mandatory SonarQube properties from pom file in Jenkins Automatically derive mandatory SonarQube properties from pom file in Jenkins jenkins jenkins

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 the Goals field e.g.:

      $SONAR_MAVEN_GOAL -Dsonar.host.url=$SONAR_HOST_URL -Dsonar.login=$SONAR_AUTH_TOKEN

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