我有一个使用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
期间传递mvn install
标志。这是一个比编辑我们的测试文件或更改pom.xml更清晰的解决方案。我正在寻找一个类似的变量,以便我们快速跳过PMD违规。谢谢!
PS:我完成了我的作业。以下两个Stackoverflow问题不包含我想要的解决方案:
只需将pom.xml中的failPmdOnViolation属性声明为true,在插件设置中指定该属性而不是硬编码常量,然后可以通过从命令行激活特殊配置文件来覆盖它。或者你可以像default expression for failOnViolation plugin property一样推荐mvn -Dpmd.failOnViolation=false install
我使用下面的命令与使用skipTests=true
的方式相同。
mvn clean install -Dpmd.skip=true
我们也可以使用findbugs
-Dfindbugs.skip=true