Por que o plug-in Maven JAR não inclui alguns recursos?
Eu tenho um aplicativo corporativo que estou no processo de conversão de uma compilação Ant para Maven. Está quase completamente convertido; esta é a última coisa que preciso consertar. O aplicativo é empacotado como um arquivo EAR que contém dois WARs e possui um módulo JAR que fornece toda a funcionalidade principal do aplicativo.
Estou usando a biblioteca de templates do Freemarker para gerar, entre outras coisas, corpos de mensagens para e-mails automáticos enviados pelo aplicativo. O Freemarker precisa que seus arquivos de modelo * .ftl estejam no caminho de classe e, como essa é a funcionalidade principal do aplicativo, não específica para um WAR ou outro, ele precisa estar no JAR.
O módulo Maven que define o JAR possui o seguinte 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>
Os arquivos * .ftl estão localizados em src / main / resources / template /, com alguns em um subdiretório dentro de template /. Existem outros arquivos dentro de src / main / resources - alguns .properties e alguns .xml, alguns na raiz e alguns sob uma estrutura de diretórios.
Quando executo a fase de pacote neste módulo (ou no pai), o diretório target / classes criado como parte do processo de compilação contém o diretório de modelo, que por sua vez contém todos os arquivos * .ftl, * .xml e * arquivos .properties com uma estrutura de diretórios apropriada. Se eu JAR este diretório manualmente, tudo funciona perfeitamente.
Aqui é onde isso fica estranho e eu me perco: quando o maven-jar-plugin cria o JAR, ele inclui os arquivos XML e de propriedades, mas o diretório de templates está completamente ausente do JAR e seu conteúdo não é encontrado em lugar algum.
Como você pode ver acima, eu tentei incluir explicitamente ** / *. Ftl. Não faz diferença; Posso excluir toda a tag "includes" e obtenho exatamente o mesmo comportamento.
Estou usando o Maven 3.0.5 e o maven-jar-plugin 2.4.