web-dev-qa-db-ja.com

Maven:クラスフォルダーにMETA-INFフォルダーを含める

非常に単純なWARプロジェクトがあり、すべてのコンパイル済みJavaクラスが存在するクラス出力フォルダーの最上部にMETA-INFという名前のディレクトリを含める必要があります。Mavenを使用していますただし、デフォルトではMavenにはJavaクラスではないものは含まれません。したがって、srcディレクトリの最上部にあるMETA-INFディレクトリは無視されます。 META-INFディレクトリにはpersistence.xmlという名前のファイルが含まれていますが、このディレクトリとファイルを出力フォルダーに配置するようにMavenに指示する方法に関するクイックポインターはありますか。

40
user157916

一般に、JavaベースのMavenプロジェクトの場合、非ソースファイルはプロジェクトのsrc/main/resourcesサブディレクトリに配置する必要があります。そのresourcesディレクトリの内容は、ビルドのprocess-resourcesフェーズで出力ディレクトリ(デフォルトではtarget/classes)にコピーされます。

Maven WARプロジェクトの場合、少し複雑です。Mavenがsrc/main/webappを検出することを期待するWEB-INF/web.xmlディレクトリもあります。 WARファイルを作成するには、そのファイルが存在する必要があります。そうしないと、次のようなエラーメッセージが表示されます。

[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Error assembling WAR: webxml attribute is required (or pre-existing WEB-INF/web.xml if executing in update mode)

WEB-INFディレクトリはsrc/main/webappの下に存在する必要があるため、src/main/resourcesで再び定義することを避けることをお勧めします。これは完全に有効であり、2つのディレクトリの内容はマージされますが、両方でファイルが定義されていると混乱を招く可能性があります。 src/main/resourcesのコンテンツは、src/main/webappのコンテンツの上にコピーされるため、優先されます。

82
Rich Seller

Mavenは、このタイプの情報をリソースフォルダーに必要とします。詳細については、 here を参照してください。

Project
|-- pom.xml
`-- src
    `-- main
        |-- Java
        `-- resources

追加のリソースディレクトリの指定については、 here を参照してください。

11
jt.

これをpom.xmlに追加します。

        <plugin>
            <groupId>org.Apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.1.1</version>
            <configuration>
                <failOnMissingWebXml>false</failOnMissingWebXml>
            </configuration>
        </plugin>
4
Makub

既にMaven2にジャンプしている場合は、Archetypeプラグインを使用することをお勧めします。 webappアーキタイプを使用すると、標準的なディレクトリ構造になります。あなたのソースを見る他の誰もがすぐにすべてがどこにあるかを知るでしょう、そしてあなたのファイルがどこに行くかについての質問はありません。

4
Zac

POM.xmlに以下のエントリを追加します

<plugin>
                <groupId>org.Apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.1.1</version>
                <configuration>
                  <!--webappDirectory>/sample/servlet/container/deploy/directory</webappDirectory-->
                  <packagingExcludes>**/web.xml</packagingExcludes>
                </configuration>
            </plugin>
0
Java Guy