为什么 Maven 命令“ mvn sonar: sonar”在我的“ pom.xml”中没有任何插件配置就可以工作?

我有一个 Maven 网站项目在我的回购。

我是一个 Maven 的菜鸟,但我仍然明白这样一个事实,即有插件,我们需要配置,只有当我们可以运行插件特定的命令。

事实:

我在9000端口的本地机器上运行了一个声纳服务器。

我没有在 POM.xml 中添加任何特定于声纳的插件

参考文献:

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

观察结果:

但是当我在项目中从命令行运行 mvn sonar:sonar时,它仍然可以正常工作。

事实上是 我没有在我的 POM.xml 中配置声纳插件即使这样,Maven 从哪里获取并理解“声纳: 声纳”的目标/命令?

问题/好奇心:

我不想要声纳本身的工作知识。我想知道为什么 mvn sonar:sonar不需要在 pom.xml 中配置声纳插件就可以工作

为什么? 怎么做到的?

81453 次浏览

Sonar 有自己的一组插件(例如 maven-checkstyle-plugin) ,当被调用时它正在运行这些插件。这些插件会根据已配置的 Sonar 服务器中的项目设置自动配置。

这背后的原因有一个控制配置在您的声纳实例。

它自动工作的原因是您正在使用声纳服务器安装的默认值(localhost: 9000)。

这里进一步详细介绍了这种“零配置”方法: 我们做了一个梦: 声纳

原因是 Sonar Maven Plugin 托管在 Codehaus Mojo 项目上,并受益于 groupId“ org.codehaus.mojo”。这允许使用快捷方式“ sonar: sonar”而不是“ org.codehaus.mojo: sonar-Maven-plugin: : sonar”(参见 Maven 文档的“配置 Maven 搜索插件”一节)

我可能是错误的,但我的假设是,这种能力通常来自您的 settings.xml,而不是我们的 pom.xml文件与 Maven。我假设 <id>sonar</id>部分指定了在运行 mvn时调用的配置文件的名称。

这只是一个猜测,而不是一个明确的答案在这个时候,因为其他的答案似乎没有标记,我没有时间去挖掘真正的答案自己目前。

我可能是错误的,但我的假设是,这种能力通常来自您的 settings.xml,而不是我们的 pom.xml文件与 Maven。我假设 <id>sonar</id>部分指定了在运行 mvn时调用的配置文件的名称。

这只是一个猜测,而不是一个明确的答案在这个时候,因为其他的答案似乎没有标记,我没有时间去挖掘真正的答案自己目前。

参考文献:

根据本页-https://docs.sonarqube.org/latest/analysis/scan/sonarscanner-for-maven/

Maven 项目扫描器默认使用 SonarScanner,所以它不需要任何设置就可以工作。