首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当声纳分析绑定到多模块项目中的maven生命周期时,如何使SonarQube模块只对项目进行一次分析?

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

Stack Overflow用户
提问于 2015-03-17 12:54:23
回答 1查看 3.2K关注 0票数 5

我试图实现的是将SonarQube分析集成到构建过程中,这样每当运行mvn clean install时,代码就会使用SonarQube进行分析。我们希望将其用于本地分析,也用于在Jenkins的基础上进行构建。如果发现了新的问题,那么构建就会失败(我们希望使用构建器插件)。这样,开发人员就会知道,通过他的代码,他的代码将引入新的问题,并且必须修复它们才能使构建工作。

当我运行mvn sonar:sonar时,分析需要30秒,这是可以的。

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

Note (可能有助于找出问题所在):运行构建的项目中包含多个模块,我猜这就是问题所在。看起来,sonar:sonar目标被多次执行,每个子模块执行一次,并且对整个项目进行多次分析(不仅仅是子模块)。因此,我们有4个子模块,并在构建过程中生成了5次报告。

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

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

父pom:SonarQube插件属性:

代码语言:javascript
复制
<!-- 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>

项目pom:中的插件配置

代码语言:javascript
复制
                <!-- 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 to be generated already -->
                <plugin>
                   <groupId>org.codehaus.mojo</groupId>
                   <artifactId>sonar-maven-plugin</artifactId>
                   <version>2.5</version>
                   <executions>
                        <execution>
                           <phase>verify</phase>
                              <goals>
                                 <goal>sonar</goal>
                               </goals>
                        </execution>
                  </executions>
                </plugin>
EN

回答 1

Stack Overflow用户

发布于 2015-03-18 12:16:18

海事组织,这只是Maven配置问题,您在执行<inherited>false</inherited>时缺少了sonar:sonar元素

代码语言:javascript
复制
                <!-- Run sonar analysis (preview mode) during verify phase. Cobertura reports need to be generated already -->
                <plugin>
                   <groupId>org.codehaus.mojo</groupId>
                   <artifactId>sonar-maven-plugin</artifactId>
                   <version>2.5</version>
                   <executions>
                        <execution>
                           <phase>verify</phase>
                           <goals>
                              <goal>sonar</goal>
                           </goals>
                           <inherited>false</inherited>
                        </execution>
                  </executions>
                </plugin>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29099614

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档