1

我想使用 Sonar 插件,以便它只有在我的 Maven 配置文件中激活时才会执行。目前,Sonar 在每次编译时运行。

问题是对于没有在本地安装 Sonar 应用程序的其他团队成员,构建将失败。pom.xml 已签入,因此所有团队成员都获得了相同的副本,包括声纳配置,但我不希望他们仅仅为了禁用声纳而对其进行修改(他们可能无意中签入了修改后的副本)。

请告知如何配置 Maven (.m2/settings.xml) 和/或 pom.xml,以便可以通过本地配置文件启用/禁用声纳功能。

这是每个项目的 pom.xml 中当前的 Sonar 配置:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>sonar-maven-plugin</artifactId>
    <version>1.0</version>
    <executions>
        <execution>
            <id>make-sonar</id>
            <phase>compile</phase>
            <goals>
                <goal>sonar</goal>
            </goals>
        </execution>
    </executions>
</plugin>
4

1 回答 1

1

只需在 Maven 配置文件中包含您的配置:

<profiles>
    <profile>
        <id>sonar</id>
        <build>
            <plugins>
            <!-- Your Sonar config here -->
            </plugins>
        </build>
    </profile>
</profiles>

然后在启用配置文件的情况下调用 Maven: mvn clean install -Psonar

从 Maven 2.09 开始,您可以根据文件的存在自动启用插件。因此,您可以将以下内容添加activation到上述配置文件中:

<activation>
    <file>
        <exists>/full/path/to/sonar/installation</exists>
    </file>
</activation>

如果绝对路径让你发痒(就像他们对我做的那样),exists也可以插入系统属性。您可能很快就会过火,而且 POM 不应该对构建项目的系统一无所知,因此请谨慎行事。

你的困境表明了一个更深层次的问题:为什么只有在看 SonarQube?软件质量是一项共同的努力,SonarQube 通过在中心位置自动运行而蓬勃发展。您可能希望在 CI 环境中安装 SonarQube 并对每个构建运行分析。然后,您和您的同事可以在提交之前运行SonarQube IDE来检查您的工作。

于 2013-09-06T04:38:56.270 回答