我已在我的 pom 中将 Sonar 设置为 Maven 插件,并且希望该插件仅在运行测试时运行。用例是我希望声纳插件在我的 CI 服务器上运行,但在打包 jar 时不运行。 因此
mvn test
应该执行声纳插件,但 mvn -DskipTests clean package
不应该执行。
今天,当我跳过测试时,声纳插件也在运行。
我今天的设置:
<sonar.host.url>https://sonar.myserver.no</sonar.host.url>
<sonar.login>my token</sonar.login>
<sonar.projectName>My app</sonar.projectName>
.....
<plugin>
<groupId>org.sonarsource.scanner.maven</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>${sonar.maven.plugin.version}</version>
<executions>
<execution>
<id>sonar</id>
<phase>test</phase>
<goals>
<goal>sonar</goal>
</goals>
</execution>
</executions>
</plugin>
对于每个插件,我们都可以添加部分
<configuration>
...
<skip>...</skip>
...
</configuration>
在
<execution>
块中控制何时应跳过执行。在给定的情况下,我们可以将跳过逻辑绑定到属性 skipTests
:
<plugin>
<groupId>org.sonarsource.scanner.maven</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>${sonar.maven.plugin.version}</version>
<executions>
<execution>
<id>sonar</id>
<phase>test</phase>
<goals>
<goal>sonar</goal>
</goals>
<configuration>
<skip>${skipTests}</skip>
</configuration>
</execution>
</executions>
</plugin>