Warum enthält das Maven JAR-Plugin keine Ressourcen?

Ich habe eine Unternehmensanwendung, die gerade von einem Ant-Build zu Maven konvertiert wird. Es ist fast vollständig konvertiert; Dies ist das allerletzte, was ich reparieren muss. Die Anwendung ist als EAR-Datei gepackt, die zwei WAR-Dateien enthält und über ein JAR-Modul verfügt, das die gesamte Kernfunktionalität der Anwendung bereitstellt.

Ich benutze die Vorlagenbibliothek von Freemarker, um unter anderem Nachrichtentexte für automatische E-Mails zu generieren, die von der Anwendung gesendet werden. Freemarker benötigt seine * .ftl-Vorlagendateien, um im Klassenpfad zu sein, und da dies eine Kernanwendungsfunktionalität ist, die für das eine oder andere WAR nicht spezifisch ist, muss sie sich in der JAR befinden.

Das Maven-Modul, das die JAR definiert, hat den folgenden POM:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <relativePath>../../pom.xml</relativePath>
        <groupId>com.company.project</groupId>
        <artifactId>projectName</artifactId>
        <version>1.8.0</version>
    </parent>

    <artifactId>core</artifactId>
    <packaging>jar</packaging>
    <name>Core Application</name>

    <profiles>
       <!-- snip -->
    </profiles>

    <dependencies>
       <!-- snip -->
    </dependencies>

    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
                <includes>
                    <include>**/*.ftl</include>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        </resources>
        <plugins>
            <!-- snip -->
        </plugins>
    </build>
</project>

Die * .ftl-Dateien befinden sich unter src / main / resources / template /, einige in einem Unterverzeichnis in template /. Es gibt andere Dateien in src / main / resources - einige .properties und einige .xml, einige im Stammverzeichnis und einige in einer Verzeichnisstruktur.

Wenn ich die Paketphase für dieses Modul (oder für das übergeordnete Modul) ausführe, enthält das Ziel- / Klassenverzeichnis, das als Teil des Erstellungsprozesses erstellt wurde, das Vorlagenverzeichnis, das wiederum alle Dateien * .ftl, * .xml und * enthält. .properties-Dateien mit einer geeigneten Verzeichnisstruktur. Wenn ich dieses Verzeichnis manuell JAR, funktioniert alles einwandfrei.

Hier wird das merkwürdig und ich verliere mich: Wenn das maven-jar-plugin die JAR erstellt, enthält es die XML- und Eigenschaftendateien, aber das Vorlagenverzeichnis fehlt vollständig in der JAR und sein Inhalt ist nirgends zu finden.

Wie Sie oben sehen können, habe ich explizit versucht, ** / *. Ftl einzuschließen. Es macht keinen Unterschied; Ich kann das gesamte "Includes" -Tag ausschließen und bekomme genau das gleiche Verhalten.

Ich benutze Maven 3.0.5 und Maven-Jar-Plugin 2.4.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage