2013-07-12 15 views
5

私は、AntビルドからMavenへの変換処理中のエンタープライズアプリケーションを持っています。ほとんど完全に変換されています。これは私が直す必要がある最後のものです。アプリケーションは、2つのWARを含むEARファイルとしてパッケージ化され、アプリケーションのコア機能のすべてを提供するJARモジュールを備えています。Maven JARプラグインにリソースが含まれていないのはなぜですか?

私はFreemarkerテンプレートライブラリを使用して、アプリケーションから送信された自動メールのメッセージ本文を生成しています。 Freemarkerは* .ftlテンプレートファイルがクラスパス上に存在する必要があります。これは、1つのWARや他の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 /メイン/リソース/テンプレート/にあります。 src/main/resourcesには、いくつかの.propertiesといくつかの.xmlファイルがあります。いくつかはルートにあり、いくつかはディレクトリ構造の下にあります。

このモジュール(または親)でパッケージフェーズを実行すると、ビルドプロセスの一部として作成されたターゲット/ classesディレクトリにテンプレートディレクトリが含まれます。テンプレートディレクトリには* .ftl、*がすべて含まれます。 xml、および* .propertiesファイルを適切なディレクトリ構造で置き換えます。私が手動でこのディレクトリをJAR化すると、すべてが完全に機能します。

maven-jar-pluginがJARを作成するときにXMLファイルとプロパティファイルが含まれていますが、テンプレートディレクトリはJARファイルから完全に除外されており、その内容はどこにも見つかりません。

上記のように、**/*。ftlを明示的に試してみました。違いはありません。私は "includes"タグ全体を除外することができ、まったく同じ動作をします。

私はMaven 3.0.5とmaven-jar-plugin 2.4を使用しています。

答えて

10

私はこの質問を提出した後、答えを右に見つけました。

は、親POMで、私は次のように持っていた:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-jar-plugin</artifactId> 
    <version>2.4</version> 
    <configuration> 
     <includes> 
      <include>**/*.class</include> 
      <include>**/*.jdo</include> 
      <include>**/*.properties</include> 
      <include>**/*.xml</include> 
     </includes> 
    </configuration> 
</plugin> 

私は含まれており、今では働いているのリストに\*\*/*.ftlを追加しました。

EDIT:構成タグを完全に削除したが、まだ機能している。私がクラスパス上で必要とした.propertiesファイルやその他のものは、src/main/javaではなくsrc/main/resourcesになければならないことが分かってから、残念だと思います。

関連する問題