如果跳过 Maven 测试,则跳过声纳插件执行

Skip sonar plugin execution if maven tests are skipped

我已经在我的 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>

<execction> 块中控制何时应跳过执行。在给定的情况下,我们可以将跳过绑定到 属性 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>