Java 为什么Maven命令;mvn声纳:声纳;在my";中没有任何插件配置的情况下工作;xml“;?

Java 为什么Maven命令;mvn声纳:声纳;在my";中没有任何插件配置的情况下工作;xml“;?,java,maven,sonarqube,maven-plugin,Java,Maven,Sonarqube,Maven Plugin,我的回购协议中有一个Maven web项目 我是一个Maven noob,但我仍然理解这样一个事实:我们需要配置一些插件,然后才能运行特定于插件的命令 事实: 我有一个声纳服务器在9000端口的本地机器上运行 我没有在POM.xml中添加任何特定于声纳的插件 参考资料: 观察: 但当我在我的项目中从命令行运行mvn sonar:sonar时,它仍然可以正常工作 事实上,我还没有在我的POM.xml中配置sonar插件,即使是从地狱般的Maven学习和理解“sonar:sonar”目标/命令的地

我的回购协议中有一个Maven web项目

我是一个Maven noob,但我仍然理解这样一个事实:我们需要配置一些插件,然后才能运行特定于插件的命令

事实:

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

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

参考资料:

观察:

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

事实上,我还没有在我的POM.xml中配置sonar插件,即使是从地狱般的Maven学习和理解“sonar:sonar”目标/命令的地方?

问题/好奇心:

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


为什么和如何?

Sonar有自己的一套插件(例如maven checkstyle插件),在被调用时正在运行。这些插件是根据您配置的Sonar服务器中的项目设置自动配置的

这背后的理由是在声纳实例中有一个受控配置

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


这里进一步详细介绍了这种“零配置”方法:

原因是Sonar Maven插件位于,并且受益于groupId“org.codehaus.mojo”。这允许使用快捷方式“sonar:sonar”而不是“org.codehaus.mojo:sonar maven plugin::sonar”(请参阅的“配置maven以搜索插件”一节)

我可能错了,但我的假设是,此功能通常来自您的
设置.xml
,而不是我们的
pom.xml
文件。我假设
sonar
部分指定运行
mvn
时调用的配置文件的名称


这只是一个猜测,而不是目前的一个确定答案,因为其他答案似乎没有找到正确的答案,我自己目前没有时间深入研究真正的答案。

我可能错了,但我的假设是,这种功能通常来自您的
设置.xml
,而不是我们的
pom.xml
向Maven归档。我假设
sonar
部分指定运行
mvn
时调用的配置文件的名称

这只是一个猜测,而不是目前的一个确定答案,因为其他答案似乎没有抓住重点,而我自己目前没有时间深入挖掘真正的答案

参考资料:


否,Sonar直接执行代码分析器,如Checkstyle、PMD和Findbugs,而不依赖相关的Maven插件。它允许支持非Maven环境。此外,为了获取信息,Sonar嵌入了自己的增强代码分析器。感谢您将此设置为直截了当的Simon。仍然不明白。。为什么拥有groupId“org.codehaus.mojo”让我们使用快捷方式?@levgen org.apache.maven.plugins和org.codehaus.mojo是特殊的组ID。参见本文的最后一节,它没有回答当pom中没有提到插件时,
mvn sonar:sonar
如何执行的问题?我认为OP不想问关于
sonar
是如何解决的。@BreakingBenjamin你的问题似乎是关于Maven本身,而不是SonarQube。