【发布时间】:2017-05-11 13:17:39
【问题描述】:
这里是简单的问题。我想添加要在每个 Maven 构建上执行的声纳。我试过了:
<plugin>
<groupId>org.sonarsource.scanner.maven</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>3.1.1</version>
</plugin>
和
<plugin>
<groupId>org.codehaus.sonar</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>5.1</version>
</plugin>
和
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>2.7.1</version>
</plugin>
因为 a) 我无法弄清楚插件的作用和/或 b) 哪个是当前插件。
如果我只将上述内容添加到<build> -> <plugins> 它永远不会执行(因此插件没有默认执行)。所以当然我添加了一条<execution> 指令,然后Sonar 被执行,但出现以下错误消息:
<executions>
<execution>
<phase>prepare-package</phase>
<goals>
<goal>sonar</goal>
</goals>
</execution>
</executions>
无法在项目 org.acme.project.build 上执行目标 org.sonarsource.scanner.maven:sonar-maven-plugin:3.1.1:sonar(默认):无法执行 Findbugs:该项目包含 Java 源文件未编译的。
我使用哪个阶段似乎并不重要(我尝试了 validate 和 compile 和 test 和 prepare-package 和 package 尽管并非所有这些都有意义)。我确信项目中的任何地方都没有源代码生成。静态类编译得很好。
我认为问题可能是每个模块都执行了插件,包括父 pom 项目。这很奇怪,因为sonar:sonar 跳过了那个项目。
但是项目结构很简单,我也找不到什么不寻常的地方:
<groupId>group</groupId>
<artifactId>org.acme.project.build</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>org.acme.project</module>
</modules>
<profiles>
<profile>
<id>sonar</id>
<properties>
<sonar.host.url>http://sonar.acme.org/</sonar.host.url>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.sonarsource.scanner.maven</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>3.1.1</version>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>sonar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
项目org.acme.project 除了它自己的工件ID 和父项之外什么都没有。命令行为:mvn clean deploy -Dsonar.login=Wile.Coyote -Dsonar.password=*********** -Psonar
日志显示声纳总是在安装阶段之前执行,当然这还为时过早。
那么如何使用 Sonar 的 Maven 插件来分析我的代码呢?
【问题讨论】:
-
你得到的错误是哪个插件?
-
@nullpointer 与
sonar-maven-plugin. -
我的意思是使用来自哪个 groupId 的 sonar-maven-plugin?你是同时使用这三个吗?
-
@nullpointer 抱歉,来自
org.sonarsource.scanner.maven。我也添加了这个问题。 -
# 在某些情况下,您可能希望将 sonar:sonar 目标作为专用步骤运行。确保使用 install 作为多模块项目的第一步
mvn clean install mvn sonar:sonar
标签: maven sonarqube-scan