【发布时间】:2012-10-15 20:30:36
【问题描述】:
我有一个使用 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 服务可能未处于活动状态)时,我们在 mvn install 期间传递 -Dskip.integration.tests=true 标志。这是一个比编辑我们的测试文件或更改 pom.xml 更简洁的解决方案。我正在寻找一个类似的变量来允许我们快速跳过 PMD 违规。谢谢!
PS:我做了功课。以下两个 Stackoverflow 问题不包含我想要的解决方案:
【问题讨论】:
标签: java maven maven-plugin pmd suppress-warnings