java - 我们如何在 Maven 中为主要和测试 java 代码集设置不同的 PMD 规则集?
问题描述
在 Gradle 中,我们可以为 pmdMain 和 pmdTest 源集指定不同的 PMD 配置(包括不同的规则集)。例如
pmdMain {
ruleSetFiles = files("$javaBuildSystemRoot/src-pmd-rulesets.xml")
}
pmdTest {
ruleSetFiles = files("$javaBuildSystemRoot/test-pmd-rulesets.xml")
}
我们希望测试代码的严格程度低于主代码。
有一个单独的基于 maven 的项目,我们目前无法使用 gradle。但现在,我们希望至少应用基于 main vs test 的 2 个不同的规则集。它是一个单模块单项目,使用 maven PMD 插件。
我们如何在 Maven pom 文件中做到这一点?
解决方案
对测试源进行 pmd 处理是“非常规的”,但这不是问题的一部分。:)
使用 executions 标签并利用maven-pmd-plugin,您可以使用 maven 执行此操作。
编辑:简而言之并应用于给定的输入(可能比您想要/需要的更多),它使/强制您在每个构建中都进行检查:
<project><build><plugins>
<plugin>
<artifactId>maven-pmd-plugin</artifactId>
<version>3.11.0</version> <!-- latest up-to-date -->
<executions>
<execution>
<id>pmd-execution</id>
<goals>
<goal>check</goal>
</goals>
<configuration>
<rulesets>
<ruleset>${javaBuildSystemRoot}/src-pmd-rulesets.xml</ruleset>
</rulesets>
</configuration>
</execution>
<execution>
<id>pmd-test-execution</id>
<goals>
<goal>check</goal>
</goals>
<configuration>
<rulesets>
<ruleset>${javaBuildSystemRoot}/test-pmd-rulesets.xml</ruleset>
</rulesets>
</configuration>
</execution>
</executions>
</plugin>
...
另请参阅:我可以在 pluginManagement 中配置多个插件执行,并在我的子 POM 中选择它们吗?
编辑 2:如果您确实不需要“两个执行”(在 1 个构建中),而只需要“不同构建”的“两个配置”,那么: Maven Profiles适合您的需求(使用配置文件......您的“可能性收敛到无穷”) !
您将介绍如下配置文件:
<project>
...
<profiles>
<profile>
<id>pmdMain</id>
<properties>
<myPmdRuleSetLocation>${javaBuildSystemRoot}/src-pmd-rulesets.xml</myPmdRuleSetLocation>
</properties>
</profile>
<profile>
<id>pmdTest</id>
<properties>
<myPmdRuleSetLocation>${javaBuildSystemRoot}/test-pmd-rulesets.xml</myPmdRuleSetLocation>
</properties>
</profile>
<profiles>
...
</project>
并在您的(单个)pmd-plugin 配置中使用它:
...
<ruleset>${myPmdRuleSetLocation}</ruleset>
...
请进一步阅读配置文件及其激活。
(另外<profile/>
可以包含 & 覆盖<build/>
标签!)
推荐阅读
- android-studio - E/RecyclerView:没有附加适配器;跳过布局。适配器不想被识别/检测
- javascript - 越南语蹩脚的问题
- terminal - 尝试在 crontab 上运行 .sh,在 Macbook 上出现“不允许操作”
- python - 如何将使用opencv读取的ipcam帧转换为hls流
- prestashop - str_split() 的 Smarty 等效项
- c++ - Unicode 字符无法识别
- python - 将格式设置为标题时,熊猫数据框自动调整列宽度
- bash - 如何运行 mp4 文件直到它在 linux 中结束?
- sql - 在 Django ORM 中转换复杂的 SQL 查询
- wso2 - WSO2 身份服务器基础 -V5.11:无法运行“pickup-dispatch”应用程序