Ant ビルドから Maven に変換中のエンタープライズ アプリケーションがあります。ほぼ完全に変換されています。これは私が修正する必要がある最後のものです。アプリケーションは、2 つの WAR を含む EAR ファイルとしてパッケージ化され、アプリケーションのすべてのコア機能を提供する JAR モジュールがあります。
私は Freemarker テンプレート ライブラリを使用して、特に、アプリケーションによって送信される自動メールのメッセージ本文を生成しています。Freemarker はその *.ftl テンプレート ファイルをクラスパスに配置する必要があります。これはコア アプリケーション機能であり、特定の WAR に固有のものではないため、JAR に配置する必要があります。
JAR を定義する Maven モジュールには、次の 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 ディレクトリにテンプレート ディレクトリが含まれます。適切なディレクトリ構造を持つ .properties ファイル。このディレクトリを手動で JAR すると、すべてが完全に機能します。
これが奇妙で迷子になるところです。maven-jar-plugin が JAR を作成すると、XML ファイルとプロパティ ファイルが含まれますが、テンプレート ディレクトリは JAR に完全に存在せず、その内容はどこにも見つかりません。
上記のように、**/*.ftl を明示的にインクルードしてみました。違いはありません。「includes」タグ全体を除外すると、まったく同じ動作が得られます。
Maven 3.0.5 と maven-jar-plugin 2.4 を使用しています。