Teilen Sie bestimmte PMD-Regelsätze in einem Multi-Modul-Maven-Projekt

Ich versuche, die gleiche PMD-Konfiguration für alle meine Submodule zu verwenden. Ich suche nach dem besten Weg, das zu erreichen

Ich dachte, ich könnte es in das übergeordnete Projekt einfügen, so wie ich es für das Checkstyle-Plugin getan habe

Übergeordnete 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>
Multi-Modul-Struktur

Hier meine Struktur

parent
|-- src
|   `-- main
|       `-- resources
|           |-- pmd.xml
|           `-- checkstyle.xml
|-- pom.xml
|-- model
|   `-- pom.xml
`-- webapp
    `-- pom.xml
Error

Mit dieser Konfiguration erhalte ich nur den folgenden Fehler:

 [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]
Lösung 1

Ich habe diese Lösung ausprobiert, die für mich funktioniert, da ich nur eine Ebene für Submodule habe: Aber in naher Zukunft kann es sein, dass ich mehr Ebenen habe, daher bin ich nicht überzeugt, dass dies DIE Methode $ {basedir} /../ src / main ist /resources/pmd.xml

Lösung 2

Ohne die gesamte Lösung zu schreiben, kann ich mithilfe einer Assembly meine Konfiguration komprimieren und in allen meinen Submodulen als Abhängigkeit verwenden. Dies würde für jedes Level funktionieren, aber das ist übertrieben!

Hier ein Link, der es erklären würde:Wie man Ressourcen aus dem Krieg in ein anderes Maven-Projekt einbindet

Also suche ich nach einem Maven-Trick, aber ich weiß nicht was oder wie! Jeder Rat / Hinweis ist willkommen.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage