跨多模块 Maven 项目共享特定的 PMD 规则集

2023-12-08

我试图在所有子模块之间共享相同的 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

使用此配置,我只收到以下错误:

 [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/resources/pmd.xml

解决方案2

无需编写所有解决方案,我可以使用程序集来压缩我的配置并在所有子模块中将其用作依赖项。这适用于任何级别,但这太过分了!

这里有一个链接可以解释它:如何将 war 资源包含到另一个 Maven 项目中

所以我正在寻找 Maven 技巧,但我不知道是什么或如何!欢迎每一条建议/线索。


有一个单独的模块,其中包含通用配置文件(例如构建工具)。然后您可以将此模块作为依赖项添加到您的插件配置中并加载它。

我已经在 ksoap2-android 项目中的多个模块中使用 checkstyle 配置文件实现了一个示例。

https://github.com/mosabua/ksoap2-android/blob/master/pom.xml

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

跨多模块 Maven 项目共享特定的 PMD 规则集 的相关文章

随机推荐