我正在尝试在我的所有子模块中共享相同的 pmd 配置。我正在寻找实现这一目标的最佳方法
我认为我可以将它放在父项目中,就像我为 checkstyle 插件所做的那样
父 pom.xml
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>2.9.1</version>
<configuration>
<configLocation>/src/main/config/checkstyle.xml</configLocation>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>2.7.1</version>
<configuration>
<rulesets>
<ruleset>pmd.xml</ruleset>
</rulesets>
<linkXref>true</linkXref>
<sourceEncoding>${project.build.sourceEncoding}</sourceEncoding>
<targetJdk>${maven.compiler.target}</targetJdk>
</configuration>
</plugin>
</plugins>
</build>
多模块结构
这是我的结构
parent
|-- src
| `-- main
| `-- resources
| |-- pmd.xml
| `-- checkstyle.xml
|-- pom.xml
|-- model
| `-- pom.xml
`-- webapp
`-- pom.xml
错误
使用此配置,我只会收到以下错误:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-pmd-plugin:2.7.1:pmd (default-cli) on project model: An error has occurred in PMD Report report generation. Could not find resource 'pmd.xml'. -> [Help 1]
解决方案 1
我尝试了这个对我有用的解决方案,因为我在子模块上只有一个级别:但在不久的将来,我可能会有更多级别,所以我不相信这是方法 ${basedir}/../src/main /资源/pmd.xml
解决方案 2
在不编写所有解决方案的情况下,我可以使用程序集来压缩我的配置并在我的所有子模块中使用它作为依赖项。这适用于任何级别,但这太过分了!
这里有一个可以解释它的链接:如何将资源从战争中包含到另一个 Maven 项目中
所以我正在寻找一个 Maven 技巧,但我不知道什么或如何!欢迎每个建议/线索。