如何在Maven中为主要和测试java代码集提供不同的PMD规则集?

如何在Maven中为主要和测试java代码集提供不同的PMD规则集?,java,maven,gradle,pmd,Java,Maven,Gradle,Pmd,在Gradle中,我们可以为pmdMain和pmdTest源集指定不同的PMD配置(包括不同的规则集)。e、 g pmdMain { ruleSetFiles = files("$javaBuildSystemRoot/src-pmd-rulesets.xml") } pmdTest { ruleSetFiles = files("$javaBuildSystemRoot/test-pmd-rulesets.xml") } 我们希望对测试代码的严格程度低于主代码 有一个单独的

在Gradle中,我们可以为pmdMain和pmdTest源集指定不同的PMD配置(包括不同的规则集)。e、 g

pmdMain {
    ruleSetFiles = files("$javaBuildSystemRoot/src-pmd-rulesets.xml")
}

pmdTest {
    ruleSetFiles = files("$javaBuildSystemRoot/test-pmd-rulesets.xml")
}
我们希望对测试代码的严格程度低于主代码

有一个单独的基于maven的项目,我们目前无法使用gradle。但现在,我们希望至少基于main vs test应用两个不同的规则集。这是一个单模块单项目,使用maven PMD插件

我们如何在Maven pom文件中做到这一点?

对测试源进行pmd是“非常非常规的”,但这不是问题的一部分。:)

你可以用maven来做这件事


编辑:简而言之&应用于给定的输入(可能比您想要/需要的更多),它允许/强制您在每个构建中进行两次检查:



编辑2:如果您确实不需要“两次执行”(在1个版本中),但对于“不同版本”只需要“两个配置”,那么: 符合您的需求(通过配置文件…您的“可能性汇聚到无限”)

您将介绍如下配置文件:

 <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>

...
pmdMain
${javaBuildSystemRoot}/src-pmd-rulesets.xml
偏振模色散测试
${javaBuildSystemRoot}/test-pmd-rulesets.xml
...
并在(单个)pmd插件配置中使用:

...
  <ruleset>${myPmdRuleSetLocation}</ruleset>
...
。。。
${myPmdRuleSetLocation}
...
请在个人资料和他们的激活

(另外,
可以包含并覆盖
标记!)

在测试源上进行pmd是“非常非常规的”,但这不是问题的一部分:

你可以用maven来做这件事


编辑:简而言之&应用于给定的输入(可能比您想要/需要的更多),它允许/强制您在每个构建中进行两次检查:



编辑2:如果您确实不需要“两次执行”(在1个版本中),但对于“不同版本”只需要“两个配置”,那么: 符合您的需求(通过配置文件…您的“可能性汇聚到无限”)

您将介绍如下配置文件:

 <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>

...
pmdMain
${javaBuildSystemRoot}/src-pmd-rulesets.xml
偏振模色散测试
${javaBuildSystemRoot}/test-pmd-rulesets.xml
...
并在(单个)pmd插件配置中使用:

...
  <ruleset>${myPmdRuleSetLocation}</ruleset>
...
。。。
${myPmdRuleSetLocation}
...
请在个人资料和他们的激活


(另外,
可以包含并覆盖
标记!)

xerx593,您是想在上述答案中添加“阶段”标记还是其他目标?如果没有这一点,两个执行看起来是相同的……“我认为”
阶段
是可选的。当然,您必须调整和测试两种配置:内部配置-我的答案只是一个大纲。如果您使用插件目标
pmd
true
也应添加到第二次执行或配置文件中。xerx593,您是想在上述答案中添加“阶段”标记还是其他目标?如果没有这一点,两个执行看起来是相同的……“我认为”
阶段
是可选的。当然,您必须调整和测试两种配置:内部配置-我的答案只是一个大纲。如果您使用插件目标
pmd
true
也应添加到第二次执行或配置文件中。