mvn sonar:sonar是什么意思?

11

命令mvn sonar:sonar执行哪些Maven生命周期阶段?

当我查看运行在屏幕上的日志时,我看到了非常高层次的test,install

考虑以下示例:

我有一个Maven项目如下:

maven-root

 maven-child-1

 maven-child-2
考虑以下情况,我一直在根目录下按顺序执行以下操作:
  1. mvn clean install
  2. mvn sonar:sonar -- 查看报告
  3. 通过添加一些测试用例来增加代码覆盖率 修改了child-2
  4. 运行mvn sonar: sonar

我的测试用例更改未反映在报告中。

  1. 我已从Sonarqube中删除了报告
  2. mvn sonar:sonar

仍然生成旧报告。

简而言之,我需要执行mvn clean install,然后再执行mvn sonar:sonar吗?

如果mvn sonar:sonar包括执行mvn clean install,那么为什么报告给我旧的数字?


http://docs.codehaus.org/display/SONAR/Analyzing+with+Maven - dm78
感谢@DavidMays,它的意思是“在执行sonar:sonar之前,应该先执行安装目标”。如果不可能呢?有什么想法吗? - Vinay Veluri
@dm78 链接无效。 - Gaurav
2
@Gaurav 现在文档位于SonarQube文档→分析源代码→扫描仪→Maven的SonarScanner。源代码位于https://github.com/SonarSource/sonar-scanner-maven。 - Gerold Broser
2个回答

9

mvn sonar:sonar不会触发mvn clean install的执行。它只会触发Maven Surefire插件的执行。

因此,在每次分析之前,您需要执行mvn clean install,否则您编译的类将不是最新的,因此Surefire执行不会包括最近的修改。


1
我知道你的回答是几年前,但我遇到了同样的问题,想知道: 执行 mvn clean verify 然后再执行 mn sonar:sonar 是否足够?还是必须要有一个 install - markus_
@markus_ SonarQube文档→分析源代码→扫描仪→Maven的SonarScanner提到了install,并且对于多模块项目,“确保使用install作为多模块项目的第一步”。然而,我无法理解这与多模块项目有什么关系。由于SQ分析“•…源代码和•…编译代码”,因此mvn test-compile应该足够。 - Gerold Broser
1
感谢您的回复,我重新阅读了您提供的文档的第一个链接,它现在实际上指出,在非多模块上下文中使用verify是足够的。我很确定半年前它不是这样写的(-: 顺便说一句:test-compile是不够的,因为上传数据步骤发生在稍后。在test中执行测试将被执行,您可能还想记录和上传测试覆盖率。 - markus_
@fabrice-sonarsource-team,我也意识到sonar:sonar也会触发Maven Failsafe插件。有没有办法不调用它? - Wins

0
运行以下命令:

mvn clean install sonar:sonar


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接