我想要实现的是将SonarQube分析集成到构建过程中,这样无论何时mvn clean install运行,都会使用SonarQube分析代码.我们希望将它用于本地分析以及用于构建Jenkins.如果发现新问题,那么构建应该失败(我们希望使用构建断路器插件).这样开发人员就会知道,通过他的代码,他将引入新的问题,并且必须修复它们才能使构建工作.
当我跑步时mvn sonar:sonar,分析需要30秒,这没关系.
但是,当我尝试将sonar目标绑定到maven构建阶段时,会出现问题.我绑定sonar到verify阶段.构建需要5分钟,这太长了.大约需要1分钟.没有SonarQube分析的构建本身需要30秒.
注意(可能有助于弄清楚问题是什么):运行构建的项目中有多个模块,我猜这就是问题所在.看起来sonar:sonar多次执行目标,每个子模块执行一次,并且多次分析整个项目(不仅是子模块).因此,我们有4个子模块,并且在构建期间生成了5次报告.
相反,我们只想分析整个项目一次,而不是5次.在为所有模块生成cobertura报告之后,在构建结束时运行此1分析也很重要.
那么,如何将SonarQube分析集成到构建中,以便在为所有子模块生成cobertura报告之后,它最终只分析一次我的多模块项目一次?
父pom中的SonarQube插件属性:
<!-- Sonar plugin properties -->
<sonar.jdbc.url>jdbc:url</sonar.jdbc.url>
<sonar.analysis.mode>preview</sonar.analysis.mode>
<sonar.issuesReport.html.enable>true</sonar.issuesReport.html.enable>
<sonar.issuesReport.console.enable>true</sonar.issuesReport.console.enable>
<sonar.host.url>sonar.host:9000</sonar.host.url>
<sonar.language>java</sonar.language>
<sonar.buildbreaker.skip>false</sonar.buildbreaker.skip>
<sonar.qualitygate>Sonar%20way%20with%20Findbugs</sonar.qualitygate>
<sonar.preview.includePlugins>buildbreaker</sonar.preview.includePlugins>
<sonar.exclusions>file:**/target/**</sonar.exclusions>
<branch>development</branch>
Run Code Online (Sandbox Code Playgroud)
项目中的插件配置:
<!-- Run cobertura analysis during package phase -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>cobertura</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- Run sonar analysis (preview mode) during verify phase. Cobertura reports need …Run Code Online (Sandbox Code Playgroud)