META-INF
私は非常に単純な WAR プロジェクトを持っており、すべてのコンパイル済み Java クラスがあるクラス出力フォルダーの上部にあるという名前のディレクトリを含めたいと考えています。私は Maven を使用していますが、デフォルトでは Maven には Java クラス以外のものは含まれないようです。META-INF
したがって、ディレクトリの一番上にある私のディレクトリは無視されsrc
ます。META-INF
ディレクトリには、という名前のファイルが含まれていますpersistence.xml
。このディレクトリとファイルを出力フォルダーに配置するよう Maven に指示する方法についての簡単な指針はありますか?
5 に答える
一般に、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
ます。
これを 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>
間接的にあなたの質問に答えます。すでに Maven2 に移行している場合は、Archetype Plugin を使用することを強くお勧めします。webapp アーキタイプを使用すると、正規のディレクトリ構造になります。ソースを見ている他の人は、すべてがどこにあるかをすぐに知ることができ、ファイルがどこに行くかについて疑問が生じることはありません。