59
votes

I have a Maven web project in my repo.

I am a Maven noob but still I understand the fact that there are plugins which we need to configure only then we could run plugin specific commands.

Facts:

I have a sonar server running on my local machine at port 9000.

I have not added any sonar specific plugin in my POM.xml

Reference:

http://www.sonarsource.org/we-had-a-dream-mvn-sonarsonar/

Observation:

But still when I run mvn sonar:sonar in my project from command line it works fine.

Matter of the fact is I have NOT configured sonar plugin in my POM.xml Even then from where the hell Maven is picking up and understanding "sonar:sonar" goal/command?

Question / curiosity:

I don't want the working knowledge of sonar itself. I want to know why mvn sonar:sonar works without configuring a sonar plugin in my pom.xml

WHY and how?

5

5 Answers

61
votes

The reason is that the Sonar Maven Plugin is hosted at the Codehaus Mojo project and benefits from the groupId "org.codehaus.mojo". This allows to use the shortcut "sonar:sonar" instead of "org.codehaus.mojo:sonar-maven-plugin::sonar" (see the section "Configuring Maven to Search for Plugins" of the Maven documentation)

5
votes

Sonar has its own set of plugins (e.g. maven-checkstyle-plugin) which it is running when being invoked. These plugins are automatically configured according to your project settings in your configured Sonar server.

The reasoning behind this to have a controlled configuration in your sonar instance.

The reason it is working automatically for you is that you are using the default values for your sonar server installation (localhost:9000).

This 'zero-configuration' approach is further detailed here: We had a dream : mvn sonar:sonar

0
votes

I could be wrong but my assumption is that this capability typically comes from your settings.xml instead of our pom.xml file with Maven. I would assume that the <id>sonar</id> section specifies the name of the profile invoked when running mvn.

This is merely a guess as opposed to a definitive answer at this time as other answers seemed to be missing the mark and I don't have the time to dig into the real answers myself at the moment.

0
votes

I could be wrong but my assumption is that this capability typically comes from your settings.xml instead of our pom.xml file with Maven. I would assume that the <id>sonar</id> section specifies the name of the profile invoked when running mvn.

This is merely a guess as opposed to a definitive answer at this time as other answers seemed to be missing the mark and I don't have the time to dig into the real answers myself at the moment.

References:

0
votes

As per this page - https://docs.sonarqube.org/latest/analysis/scan/sonarscanner-for-maven/

Maven project scanner uses the SonarScanner by default. So it works without any set up.