Почему плагин Maven JAR не включает некоторые ресурсы?
У меня есть корпоративное приложение, которое я нахожусь в процессе преобразования из сборки Ant в Maven. Это почти полностью преобразовано; это самое последнее, что мне нужно исправить. Приложение упаковано в файл EAR, который содержит две WAR-файлы и содержит модуль JAR, который обеспечивает все основные функции приложения.
Я использую библиотеку шаблонов Freemarker для генерации, помимо прочего, тел сообщений для автоматических электронных писем, отправляемых приложением. Freemarker требует, чтобы его файлы шаблонов * .ftl находились в пути к классам, и, поскольку это базовая функциональность приложения, не относящаяся ни к одному WAR, ни к другому, он должен находиться в JAR.
Модуль Maven, который определяет JAR, имеет следующий 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>
Файлы * .ftl находятся в каталоге src / main / resources / template /, а некоторые находятся в подкаталоге внутри template /. В src / main / resources есть другие файлы - некоторые .properties и некоторые .xml, некоторые в корне, а некоторые в структуре каталогов.
Когда я запускаю фазу пакета в этом модуле (или в родительском), каталог target / classes, созданный как часть процесса сборки, содержит каталог шаблонов, который, в свою очередь, содержит все * .ftl, * .xml и * Файлы .properties с соответствующей структурой каталогов. Если я справлюсь с этим каталогом вручную, все будет отлично.
Вот где это становится странным, и я теряюсь: когда maven-jar-plugin создает JAR, он включает в себя XML и файлы свойств, но каталог шаблонов полностью отсутствует в JAR, и его содержимое нигде не найдено.
Как вы можете видеть выше, я попытался явно включить ** / *. Ftl. Это не имеет значения; Я могу исключить весь тег «include» и получаю точно такое же поведение.
Я использую Maven 3.0.5 и maven-jar-plugin 2.4.