How to included bundled rulesets in maven pmd plugin

此生再无相见时 提交于 2019-12-24 12:40:08

问题


I have a custom ruleset definition that refers to a bunch of rules from bundled rulesets. However, I have problems with resolving these bundled rulesets in the maven pmd plugin. Here is a related question with a quick'n'dirty solution for this problem. However, I was wondering whether there might be a clean solution for this problem (because I think that this is a rather common usecase, or?). In the following I'm describing the attempts that I tried so far:

<build>
    <pluginManagement>
        <plugins>

...
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-pmd-plugin</artifactId>
                <version>${maven-pmd-plugin.version}</version>
                <configuration>
                    <linkXref>true</linkXref>
                    <rulesets>
                        <ruleset>my_pmd_ruleset.xml</ruleset>
                    </rulesets>
                    <failsOnError>false</failsOnError>
                    <source>${java.source.version}</source>
                    <target>${java.source.version}</target>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
</build>
  1. I defined the maven pmd plugin (version 3.0.1) with my custom ruleset (and Java 1.6) in build/plugin management section of my parent pom as well as in the reporting section. I got many of the following warnings:

     [WARNING] Failure executing PMD: Unable to find referenced rule UnusedModifier; 
     perhaps the rule name is mispelled?
    
  2. I tried to refer to all utilised bundled rulesets:

    <build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-pmd-plugin</artifactId>
                <version>${maven-pmd-plugin.version}</version>
                <configuration>
                    <linkXref>true</linkXref>
                    <rulesets>
                        <ruleset>rulesets/java/coupling.xml</ruleset>
                        <ruleset>rulesets/java/design.xml</ruleset>
                        <ruleset>rulesets/java/controversial.xml</ruleset>
                        <ruleset>rulesets/java/codesize.xml</ruleset>
                        <ruleset>rulesets/java/clone.xml</ruleset>
                        <ruleset>rulesets/java/braces.xml</ruleset>
                        <ruleset>rulesets/java/basic.xml</ruleset>
                        <ruleset>rulesets/java/finalizers.xml</ruleset>
                        <ruleset>rulesets/java/imports.xml</ruleset>
                        <ruleset>rulesets/java/unit.xml</ruleset>
                        <ruleset>rulesets/java/logging-jakarta-commons.xml</ruleset>
                        <ruleset>rulesets/java/logging-java.xml</ruleset>
                        <ruleset>rulesets/java/migrating.xml</ruleset>
                        <ruleset>rulesets/java/naming.xml</ruleset>
                        <ruleset>rulesets/java/optimizations.xml</ruleset>
                        <ruleset>rulesets/java/strictexception.xml</ruleset>
                        <ruleset>rulesets/java/strings.xml</ruleset>
                        <ruleset>rulesets/java/sunsecure.xml</ruleset>
                        <ruleset>rulesets/java/typeresolution.xml</ruleset>
                        <ruleset>rulesets/java/unusedcode.xml</ruleset>
                        <ruleset>my_pmd_ruleset.xml</ruleset>
                    </rulesets>
                    <failsOnError>false</failsOnError>
                    <source>${java.source.version}</source>
                    <target>${java.source.version}</target>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
    </build>
    

There I'm getting always the following error:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-pmd-plugin:3.0.1:pmd (pmd) on project my_project: An error has occurred in PMD Report report generation. Could not find resource 'rulesets/java/unit.xml'

The maven pmd plugin depends on pmd, so the bundled rulesets should be part of the classpath, or? The Maven pmd plugin manual says that bundled rulesets should be defined with a relative path and custom rulesets with an absolute path. However, I think that it can also read my custom ruleset via a relative path, because it is part of the classpath. I also tried other thing, e.g., explicit additional dependency definition of pmd in the maven pmd plugin. However, without any success so far :\

来源:https://stackoverflow.com/questions/16164786/how-to-included-bundled-rulesets-in-maven-pmd-plugin

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!