为什么 sonar:sonar 之前需要 mvn install ?

2022-01-17 00:00:00 sonarqube java maven

官方文档 http://docs.sonarqube.org/display/SONAR/Analyzing+with+Maven 说调用声纳的正确方法是:

mvn clean install -DskipTests=truemvn 声纳:声纳

但没有说明原因.声纳如何工作?它需要编译类吗?那么为什么不直接mvn clean compile呢?还是需要一个jar文件?那么为什么不直接mvn clean package呢?声纳插件到底是做什么的?

解决方案

来自SonarSource 团队成员的解释::p><块引用>

在多模块构建中,聚合器插件无法解析来自目标文件夹的依赖项.所以你有两个选择:

  • mvn clean install &&mvn sonar:sonar 作为两个独立的进程
  • mvn clean package sonar:sonar 作为单个反应器

我也很惊讶,所以我发了一个 tweet 并收到了以下 来自 Maven 官方账号的回答:

<块引用>

如果插件的设计目的不是使用 target/classes 文件夹作为替代,那么是的,您需要安装才能在运行时获取 jar *在不同的会话 *中.如果他们强迫您使用 install 没有 foo 原因,请向插件作者投诉 [ed - @connolly_s]

official documentation http://docs.sonarqube.org/display/SONAR/Analyzing+with+Maven says that the proper way of invoking sonar is:

mvn clean install -DskipTests=true
mvn sonar:sonar

but doesn't say why. how does sonar work? does it need compiled classes? so why not just mvn clean compile? or does it need a jar file? so why not just mvn clean package? what exactly does sonar plugin?

解决方案

Explanation from a SonarSource team member:

In a multi-module build an aggregator plugin can't resolve dependencies from target folder. So you have two options:

  • mvn clean install && mvn sonar:sonar as two separate processes
  • mvn clean package sonar:sonar as a single reactor

I was surprised too, so I made a tweet an received the following answer from the official Maven account:

If the plugin is not designed to use the target/classes folder as a substitute, then yes you would need to have installed to get the jar when running *in a different session*. Complain to the plugin author if they force you to use install without foo reason [ed - @connolly_s]

相关文章