当声纳分析绑定到多模块项目中的maven生命周期时,如何使SonarQube模块仅分析项目一次?

我想要实现的是将SonarQube分析集成到构建过程中,这样无论何时运行mvn clean install ,都会使用SonarQube分析代码。 我们希望将它用于本地分析以及在Jenkins上构建。 如果发现新问题,那么构建应该失败(我们希望使用构建断路器插件)。 这样开发人员就会知道,通过他的代码,他将引入新的问题,并且必须修复它们才能使构建工作。

当我运行mvn sonar:sonar ,分析需要30秒,这没关系。

但是,当我试图将sonar目标绑定到maven构建阶段时,会出现问题。 我绑定sonarverify阶段。 构建需要5分钟 ,这太长了。 大约需要1分钟 。 没有SonarQube分析的构建本身需要30秒。

注意 (可能有助于弄清楚问题是什么):运行构建的项目中有多个模块,我想这就是问题所在。 它看起来像sonar:sonar目标被执行多次,每个子模块执行一次, 整个项目被多次分析(不仅是子模块)。 因此,我们有4个子模块,并且在构建期间生成了5次报告。

相反,我们只想分析整个项目一次,而不是5次。 在为所有模块生成cobertura报告之后,在构建结束时运行此1分析也很重要。

那么,如何将SonarQube分析集成到构建中,以便在为所有子模块生成cobertura报告之后,它最终只分析一次我的多模块项目一次?

父pom中的SonarQube插件属性:

  jdbc:url preview true true sonar.host:9000 java false Sonar%20way%20with%20Findbugs buildbreaker file:**/target/** development 

项目中的插件配置:

    org.codehaus.mojo cobertura-maven-plugin   package  cobertura       org.codehaus.mojo sonar-maven-plugin 2.5   verify  sonar     

IMO,这只是一个Maven配置问题,你在sonar:sonar的执行中缺少false元素sonar:sonar

    org.codehaus.mojo sonar-maven-plugin 2.5   verify  sonar  false