对于那些对 “为什么” 感兴趣的人 ,我做了更多的挖掘工作,看来正在发生的事情是这样的:
RunnerBootstrapper尝试检查版本是否为5.2+:
首先,从在EmbeddedRunner中创建的启动器检索 serverVersion ,
使用IsolatedLauncher创建代理的实现类BatchIsolatedLauncher
它将尝试读取sq-version.txt
包含版本的资源文件。
该sq-version.txt
文件位于org.codehaus.sonar:sonar-plugin- api中,但此依赖关系未包含(即使是传递)在sonar-maven- plugin中。它在声纳方面所引用的全部是org.sonarsource.sonar-runner:sonar- runner-api。
他们似乎已更改版本txt文件的位置和名称,但未更新所有代码。您可能不愿意手动向插件类路径添加sq-version.txt
包含内容的内容5.2
(没有换行符)(可能是通过更新插件jar),或者添加了对sonar-plugin-api的依赖关系,但是这些都是黑客。
sonar-maven-plugin 2.6使用了sonar-runner 2.4,它与sonar-maven-plugin 2.7使用的2.5完全不同(sonar-runner的groupId已将 从org.codehaus.sonar.runner
为org.sonarsource.sonar-runner
),因此最好坚持使用v2。 6个插件,直到他们平滑过渡并发布了更多版本。