如何在Maven安装过程中抑制PMD警告

6
我有一个Java项目,使用Maven构建,因此我的构建过程在项目的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服务可能不活动),我们会在mvn install期间传递-Dskip.integration.tests=true标志。这比编辑测试文件或更改pom.xml要干净得多。我正在寻找类似的变量,以便能够快速跳过PMD违规。谢谢!
PS:我已经做了功课。以下两个Stackoverflow问题没有包含我所需的解决方案:
2个回答

19

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

mvn clean install -Dpmd.skip=true 

对于查找bug,我们还可以使用

-Dfindbugs.skip=true

15

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接