42

META-INF私は非常に単純な WAR プロジェクトを持っており、すべてのコンパイル済み Java クラスがあるクラス出力フォルダーの上部にあるという名前のディレクトリを含めたいと考えています。私は Maven を使用していますが、デフォルトでは Maven には Java クラス以外のものは含まれないようです。META-INFしたがって、ディレクトリの一番上にある私のディレクトリは無視されsrcます。META-INFディレクトリには、という名前のファイルが含まれていますpersistence.xml。このディレクトリとファイルを出力フォルダーに配置するよう Maven に指示する方法についての簡単な指針はありますか?

4

5 に答える 5

83

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

Maven WAR プロジェクトの場合は、もう少し複雑ですsrc/main/webapp。Maven が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ます。

于 2009-08-19T08:47:39.783 に答える
11

Maven は、このタイプの情報を resources フォルダーに入れたいと考えています。詳しくはこちらをご覧ください。

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

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

于 2009-08-19T02:20:03.777 に答える
4

これを 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>
于 2012-04-25T14:49:46.730 に答える
4

間接的にあなたの質問に答えます。すでに Maven2 に移行している場合は、Archetype Plugin を使用することを強くお勧めします。webapp アーキタイプを使用すると、正規のディレクトリ構造になります。ソースを見ている他の人は、すべてがどこにあるかをすぐに知ることができ、ファイルがどこに行くかについて疑問が生じることはありません。

于 2009-08-19T03:11:05.473 に答える