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で]にあります。