次のエラーが発生します。
WARのアセンブルエラー:webxml属性が必要です(または更新モードで実行する場合は既存のWEB-INF / web.xml)
私はweb.xml
正しい場所にいますprojectname\src\main\webapp\WEB-INF\web.xml
何が原因でしょうか?
次のエラーが発生します。
WARのアセンブルエラー:webxml属性が必要です(または更新モードで実行する場合は既存のWEB-INF / web.xml)
私はweb.xml
正しい場所にいますprojectname\src\main\webapp\WEB-INF\web.xml
何が原因でしょうか?
回答:
maven-war-pluginのコードスニペットを提供できると助かります。web.xml
は正しい場所にあるようですが、場所を明示的に指定して試すことができます
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webXml>src\main\webapp\WEB-INF\web.xml</webXml>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
このソリューションは私のために機能します(以前は2.2を使用していました)。また、サーブレット3.0にはJavaベースの設定を使用しており、web.xmlファイルは必要ありません。
false
。したがって、 <plugin> <artifactId>maven-war-plugin</artifactId> <version>3.2.3</version> </plugin>
十分です。
私にとっても完璧に機能します。
<project>
.....
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webXml>WebContent\WEB-INF\web.xml</webXml>
</configuration>
</plugin>
</plugins>
</build>
</project>
これは、webプロジェクトにweb.xmlを含めておらず、mavenを使用して戦争を構築しようとしているためです。このエラーを解決するには、pom.xmlファイルでfailOnMissingWebXmlをfalseに設定する必要があります。
例えば:
<properties>
<failOnMissingWebXml>false</failOnMissingWebXml>
</properties>
詳しくはブログをご覧ください:https : //ankurjain26.blogspot.in/2017/05/error-assembling-war-webxml-attribute.html
XMLベースの構成からJavaベースの構成に移行していて、WebApplicationInitializerを実装することによってweb.xmlの必要性を取り除いた場合は、web.xmlファイルが存在するという要件を削除するだけです。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
...
</configuration>
私はまったく同じ問題を抱えていたので、次のように解決しました:
名前の新しいフォルダ作りWEB-INF
の下src/main/webbapp
、その後に
プロジェクトを右クリック-> Java EEツール->デプロイメント記述子スタブを生成
これはあなたを生成するはずです web.xml
これがあなたの問題を解決するのに役立つことを願っています:D
正しい場所にweb.xmlがあるように見えますが、それでも、このエラーは多くの場合、Mavenが予期するものと一致しないディレクトリ構造が原因で発生します。たとえば、Mavenを使用して構築しようとしているEclipse Webアプリケーションから始めたとします。
それが問題である場合、簡単な修正は、
src/main/java
および
src/main/webapp
ディレクトリ(および必要に応じて他のディレクトリ)を作成し、ファイルを移動することです。
mavenディレクトリレイアウトの概要は次のとおりです。http: //maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html
デフォルトのプロジェクトパスを変更する場合は、web.xmlファイルの場所を指定する必要があります。次に例を示します。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.5</version>
<configuration>
<webXml>src\main\web\WEB-INF\web.xml</webXml>
</configuration>
</plugin>
ドキュメントによると、それは言う:web.xmlファイルが欠落している場合にビルドを失敗させるかどうか。web.xmlファイルなしでWARを構築する場合は、falseに設定します。これは、web.xmlファイルのないオーバーレイを作成する場合に役立ちます。デフォルト値はtrueです。ユーザープロパティはfailOnMissingWebXmlです。
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<extensions>false</extensions>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration> </plugin>
より明確になることを願っています
それも私のために働いた。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webXml>WebContent\WEB-INF\web.xml</webXml>
</configuration>
</plugin>
WEB-INF\web.xml already added, skipping
。これは奇妙なことです。これを追加しないと、エラーが発生します。
WEB-INF\web.xml already added, skipping
テストサーバーで同じエラーが発生しましたが、ローカルでは発生していません。数分後、IDEがpom.xmlと同期していないことがわかりました。ここに私がそれを解決する方法があります:
ファイルが/src/main/webapp/WEB-INF/web.xmlに存在しないようにフォルダー構造が変更されましたか?
この問題を解決するために、Webフォルダーにwebappという名前を付け、src / main内に配置しました。Mavenはデフォルトで/src/main/webapp/WEB-INF/web.xmlでweb.xmlを探すようです。これを行う場合、web.xmlの場所をmavenに明示的に通知する必要はありません。また、フォルダー構造を変更し、ビルドが最近機能しなくなった場合、これが原因である可能性があります。
注:これは古い投稿ですが、投稿されたソリューションは、機能しているビルドが突然機能しなくなる理由を指摘していません。
多くの答えがあり、それらのほとんどは機能しますが、もう1つポイントを追加します。これは重要だと思います。
ログメッセージによると、あなたはを使用していmaven
ます。Mavenは、いくつかの規則に基づいたプロジェクト管理構築ツールです。プロジェクトをビルドし、適切なディレクトリ構造を作成しSun Microsystems Directory Structure Standard
、Java EE / Webアプリケーションに準拠する対応するディレクトリにファイルを配置します。
Mavenプラグイン、プロジェクトのルートディレクトリの変更/再構成など、多くのことを組み込むことができますが、実行できる簡単な手順が1つあり、プロジェクトは問題ありません。web.xml
下に置いてsrc\main\webapp\WEB-INF\
、でプロジェクトをビルドしてみてくださいmvn package
。
これがこの問題にもう少し光を加えることを望みます。
このエラーは、ファイルをwarにパッケージ化するようMavenに指示したために発生します。
<packaging>war</packaging>
本当に戦争が必要ですか?そうでない場合は、そこに瓶を置きます。 ここに完全なコードがあります:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<version>1.0-SNAPSHOT</version>
<groupId>com.your.groupid</groupId>
<artifactId>artifactid</artifactId>
<packaging>jar</packaging>
maven-war-pluginが使用するデフォルト値が変更されたため、他のすべての回答は古くなっている可能性があります。
3.1.0以降、プロジェクトがServlet 3.0 API以降に依存している場合、このプロパティはデフォルトでfalseになります。
だからあなたがしなければならない唯一のことは追加することです
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>foo</groupId>
<artifactId>bar</artifactId>
<version>0.0.1-SNAPSHOT</version>
<properties>
<tomcat.ignorePackaging>true</tomcat.ignorePackaging>
</properties>
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
</dependencies>
<build>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.1.0</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>