Java – Why does the Maven command “mvn sonar:sonar” work without any plugin configuration in the “pom.xml”

javamavenmaven-pluginsonarqube

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?

Best Answer

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)