如何在Maven安装期间抑制PMD警告

时间:2012-10-25 15:42:32

标签: java maven maven-plugin pmd suppress-warnings

我有一个使用 Maven 构建的Java项目,因此我的构建过程在项目的 pom.xml 文件中定义。我的开发团队使用各种插件来检查源代码的质量;一个这样的插件使用 PMD 来检查代码。插件确保每次我们在项目上执行mvn install时都运行PMD,如果有的话,它将无法生成违规。这是我们的pom.xml中的插件:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-pmd-plugin</artifactId>
            <version>2.7.1</version>
            <configuration>
                <targetJdk>1.6</targetJdk>
                <linkXref>false</linkXref>
                <failOnViolation>true</failOnViolation>
                <failurePriority>1</failurePriority>
                <rulesets>
                    <ruleset>config/pmd-rulesets.xml</ruleset>
                </rulesets>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>check</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

我的问题是有时候 - 特别是在我正在开发任务的过程中,我想查看我的代码是否构建,但是在我准备好将我的源代码提交给SCM进行自动化之前构建并释放给其他人 - 当我想要抑制PMD违规时,我的构建失败。我知道一个这样的解决方案是进入代码并添加注释以抑制警告(http://pmd.sourceforge.net/suppressing.html),但我相信以这种方式编辑源代码只是为了抑制这些违规是令人讨厌且容易出错的。我能做的另一件事是编辑我的pom并注释掉PMD插件。但是,我再次发现,更改一个对我的整个应用程序至关重要的文件很烦人且容易出错。

我的团队所希望的解决方案是允许我们简单地将某种标志或参数传递到我们的mvn命令中,以快速告诉构建过程跳过PMD插件。例如,每当我们在开发阶段的某个时刻运行安装并且我们知道集成测试可能会失败时(例如,Web服务可能不活动),我们会在{{{}期间传递-Dskip.integration.tests=true标志。 1}}。这是一个比编辑我们的测试文件或更改pom.xml更清晰的解决方案。我正在寻找一个类似的变量,以便我们快速跳过PMD违规。谢谢!

PS :我完成了我的作业。以下两个Stackoverflow问题不包含我想要的解决方案:

2 个答案:

答案 0 :(得分:9)

只需将pom.xml中的failPmdOnViolation属性声明为true,在插件设置中指定该属性而不是硬编码常量,然后可以通过从命令行激活特殊配置文件来覆盖它。或者,您可以参考default expression for failOnViolation plugin property,如mvn -Dpmd.failOnViolation=false install

答案 1 :(得分:1)

我在下面的命令中使用的方式与使用skipTests=true的方式相同。

mvn clean install -Dpmd.skip=true 

我们也可以使用findbugs

-Dfindbugs.skip=true