非常に単純なWARプロジェクトがあり、すべてのコンパイル済みJavaクラスが存在するクラス出力フォルダーの最上部にMETA-INF
という名前のディレクトリを含める必要があります。Mavenを使用していますただし、デフォルトではMavenにはJavaクラスではないものは含まれません。したがって、src
ディレクトリの最上部にあるMETA-INF
ディレクトリは無視されます。 META-INF
ディレクトリにはpersistence.xml
という名前のファイルが含まれていますが、このディレクトリとファイルを出力フォルダーに配置するようにMavenに指示する方法に関するクイックポインターはありますか。
一般に、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
のコンテンツの上にコピーされるため、優先されます。
これを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プラグインを使用することをお勧めします。 webappアーキタイプを使用すると、標準的なディレクトリ構造になります。あなたのソースを見る他の誰もがすぐにすべてがどこにあるかを知るでしょう、そしてあなたのファイルがどこに行くかについての質問はありません。
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>