eclipse-error-web-xml-missing
Eclipseエラー:web.xmlがなく、failOnMissingWebXmlがtrueに設定されています
1. 前書き
このチュートリアルでは、Webアプリケーションの作成中に発生する一般的なEclipseエラー「* _web.xml_がなく、_ <failOnMissingWebXml> _がtrue *に設定されている」について説明します。
2. Eclipseエラー
Java Webアプリケーションでは、https://docs.oracle.com/cd/E13222_01/wls/docs70/webapp/webappdeployment.html [_web.xml_]はデプロイメント記述子の標準名です。
Mavenを使用してWebアプリケーションを作成するか、Eclipseを使用して動的なWebプロジェクトを作成できます。 Eclipseは、_WEB-INF / _ディレクトリの下にデフォルトのデプロイメント記述子_web.xml_を作成しません。
-
Java EE 6+仕様では、デプロイメント記述子をアノテーションに置き換えることができるため、デプロイメント記述子を強調しないようにしています*。 ただし、下位バージョンではまだ必要です。
_failOnMissingWebXml_プロパティは、https://www.baeldung.com/maven [Apache Maven] warプラグイン、_org.apache.maven.plugins:maven-war-plugin._のプロパティの1つです。このプラグインのデフォルト値はバージョン<3.1.0の場合は_true_、それ以降のバージョンの場合は_false_。
これは、バージョン3.1.0より前の_maven-war-plugin_を使用しており、_web.xml_ファイルが存在しない場合、warファイルとしてパッケージ化するという目標は失敗することを意味します。
3. _web.xml_を使用する
_web.xml_デプロイメント記述子がまだ必要なすべての場合、Eclipseで_web.xml_を簡単に生成できます*:
-
Webプロジェクトを右クリックします
-
メニューの* Java EE Tools *にカーソルを合わせます
-
サブメニューから* Generate Deployment Descriptor *スタブを選択します
link:/uploads/generatestub.jpg []
ほら! _web.xml_ファイルは、_WEB-INF / _ディレクトリの下に生成されます。
4. web.xmlなし
ほとんどの場合、web.xmlファイルはまったく必要ありません。 プロジェクトに空の_web.xml_ファイルを保持する代わりに、作成を完全にスキップできます。 幸いなことに、使用している_maven-war-plugin_のバージョンに応じて、2つの簡単なアプローチがあります。
4.1. 3.1.0より前のmaven-war-pluginの使用
_pom.xml_の_ <plugins> _セクションでMavenプロジェクトのすべてのプラグインを構成できます。 前述したように、_failOnMissingWebXml_のデフォルト値は、プラグインのバージョン3.1.0より前の_true_です。
_pom.xml_で_maven-war-plugin_を宣言し、プロパティ_failOnMissingWebXml_を_false_ *に明示的に設定してみましょう。
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
4.2. maven-war-plugin 3.1.0以降を使用する
_maven-war-plugin_のバージョンをアップグレードすることにより、プロパティを明示的に設定することを避けることもできます。 プロパティ_failOnMissingWebXml_のデフォルト値は、_maven-war-plugin_バージョン3.1.0以降の場合は_false_です。
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.1.0</version>
</plugin>
5. 結論
この記事では、_web.xml_エラーが見つからない理由と、それを修正するための複数のアプローチを見ました。
いつものように、この例はhttps://github.com/eugenp/tutorials/tree/master/maven/maven-war-plugin[GitHubで]にあります。