为什么 sonar:sonar 之前需要 mvn install ?
官方文档 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 processesmvn 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]
相关文章