純粋なJavaベースの構成でSpring MVCプロジェクトを開発しています。Mavenクリーンインストールを実行すると、以下のエラーが発生します。
プロジェクトSpringMVC-ShoppingCartで目標org.Apache.maven.plugins:maven-war-plugin:2.2:war(default-war)の実行に失敗しました:WARのアセンブルエラー:webxml属性が必要です(または既存のWEB-INF/web更新モードで実行する場合は.xml)-> [ヘルプ1]
エラーはweb.xml
が欠落していると言いますが、純粋なJavaベースの構成を使用したため、1つはありませんでした。
プロジェクトがweb.xml
なしでwarファイルをビルドおよび作成することを確認する方法は?
このエラーは、バージョン2.6以前では maven-war-plugin
がデフォルトでsrc/main/webapp/web.xml
ファイルが存在することを想定しているために発生しますWARプロジェクト、それが見つかりませんでした。
プラグインのバージョン3.0.0の時点では、web.xml
の存在はデフォルトで必須ではなくなりました :
failOnMissingWebXml
のデフォルト値はtrue
からfalse
に変更されました。
これは、プラグインをアップグレードすると問題が直接解決されることを意味します。次の構成をPOMに追加できます。
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.0.0</version>
</plugin>
その理由は、Servlet 3.0以降、web.xml
ファイルはWebアプリケーションで不要になり、 を注釈 で置き換えることができるためですJavaベースの構成( MWAR-262 )。ただし、プロジェクトではこのファイルを置き換えるために注釈を使用しない場合があり、その場合はweb.xml
が実際に欠落する可能性があるため、バージョン3.0.1のプラグインでは、注釈 @WebServlet
は、WARプロジェクトのコンパイルクラスパスにあります( MWAR-396 )。そうでなく、プロジェクトにweb.xml
ファイルがない場合、プラグインはデフォルトで失敗します。
web.xml
を無視します注釈の使用に関係なく、欠落しているweb.xml
ファイルをプラグインに明示的に無視させる場合は、 failOnMissingWebXml
false
へのパラメーター。サンプル構成は次のとおりです。
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
これは、webプロジェクトにweb.xmlを含めておらず、mavenを使用してwarを構築しようとしていないためです。このエラーを解決するには、pom.xmlファイルでfailOnMissingWebXmlをfalseに設定する必要があります。
例えば:
<properties>
<failOnMissingWebXml>false</failOnMissingWebXml>
</properties>
詳細についてはブログをご覧ください: https://ankurjain26.blogspot.in/2017/05/error-assembling-war-webxml-attribute.html