Mavenの「webxml属性が必要です」エラー


318

次のエラーが発生します。

WARのアセンブルエラー:webxml属性が必要です(または更新モードで実行する場合は既存のWEB-INF / web.xml)

私はweb.xml正しい場所にいますprojectname\src\main\webapp\WEB-INF\web.xml

何が原因でしょうか?


1
あなたのパッケージはポンで戦争するように設定されていますか?
クラウン

私は同じ問題に直面していて、プラグインのバージョンを更新すると解決しました。
TechnocratSid 2018

回答:


359

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>

36
おかげで私も働いた。しかし、Mavenが検索するデフォルトの場所は何ですか?
バッファロー

5
maven warプラグインを2.1.1から2.4に更新しました。デフォルトの場所を明示的に指定する必要があります。
xverges 2014年

2
ItelliJ IDEAユーザー向けに回答を更新することをお勧めします。IntelliJは、<webXml> web \ WEB-INF \ web.xml </ webXml>になる別のプロジェクト構造を作成します
Vic Torious

あなたの答えを試しましたが、それでも同じエラーが発生しましたが、「C:\ Users \ xxxx \ Videos \ maven-projects \ my-project \ src \ webapp \ WEB-INF」を実行して問題なく動作しました。何が問題なのかわかりません。その運。ありがとう
バニージョエル

1
よくできました!Thx :)
yanike

145
<plugin>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.4</version>
    <configuration>
        <failOnMissingWebXml>false</failOnMissingWebXml>
    </configuration>
</plugin>

このソリューションは私のために機能します(以前は2.2を使用していました)。また、サーブレット3.0にはJavaベースの設定を使用しており、web.xmlファイルは必要ありません。


そのプラグインのバージョン3.xのfailOnMissingWebXmlのデフォルトはになりましたfalse。したがって、 <plugin> <artifactId>maven-war-plugin</artifactId> <version>3.2.3</version> </plugin> 十分です。
Eisenknurr

私のために働いて、今でもjboss-web.xmlを使用しています-ありがとう!
JGlass

web.xmlがないプロジェクトがありますが、これでうまくいきました。Mavenビルドは成功しました。
blueSky

81

私にとっても完璧に機能します。

<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>

4
ファセットが有効になっているとのWebContentフォルダである作品の上にどこweb.xmlがで行く。
ラム

32

これは、webプロジェクトにweb.xmlを含めておらず、mavenを使用して戦争を構築しようとしているためです。このエラーを解決するには、pom.xmlファイルでfailOnMissingWebXmlfalseに設定する必要があります。

例えば:

<properties>
    <failOnMissingWebXml>false</failOnMissingWebXml>   
</properties>

詳しくはブログをご覧ください:https : //ankurjain26.blogspot.in/2017/05/error-assembling-war-webxml-attribute.html


23

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>

同様の答えが以前に出されました
Paul Verest

これは、行が正確に行く必要があるコンテキストを与えます。
foo

20

動作するには、私のwebXmlタグの値が次のようになる必要があります。

<webXml>${project.basedir}\src\main\webapp\WEB-INF\web.xml</webXml> 

丁度!最初にスラッシュしかなかったのが分からなかったので、理解できませんでした<warSourceDirectory>\src\main\webapp</warSourceDirectory>。v2.6にはありません
Adam

19

私はまったく同じ問題を抱えていたので、次のように解決しました:

名前の新しいフォルダ作りWEB-INFの下src/main/webbapp、その後に

プロジェクトを右クリック-> Java EEツール->デプロイメント記述子スタブを生成

これはあなたを生成するはずです web.xml

これがあなたの問題を解決するのに役立つことを願っています:D


13

正しい場所に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


6

デフォルトのプロジェクトパスを変更する場合は、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>

6

ドキュメントによると、それは言う: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>

より明確になることを願っています


5

それも私のために働いた。

        <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。これは奇妙なことです。これを追加しないと、エラーが発生します。
erwineberhard

erwineberhardと同じです。WEB-INF\web.xml already added, skipping
Prachi

4

mvn-war-plugin 2.3はこれを修正します:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.3</version>
        </plugin>
        ...

4

テストサーバーで同じエラーが発生しましたが、ローカルでは発生していません。数分後、IDEがpom.xmlと同期していないことがわかりました。ここに私がそれを解決する方法があります:

Eclipseを使用してデプロイメント記述子を再生成する

  1. プロジェクトフォルダを右クリックします
  2. コンテキストメニューで、[Java EEツール]、[Generate Deployment Descriptor Stub]の順に選択します。 web.xmlを生成する
  3. web.xmlを作成します。 プロジェクト構造のweb.xml

IntelliJを使用してデプロイメント記述子を再生成する

  1. プロジェクトフォルダを右クリックします
  2. コンテキストメニューで[Open Module Settings]を選択し、[+]をクリックしてWebデプロイメント記述子を追加します。 配備記述子を生成する
  3. 次に、記述子へパスまたはWebリソースディレクトリおよび右側のを変更できます
  4. 次に、次のようなものが得られます: プロジェクトの構造

1
netbeansでは、プロジェクトノードを右クリックし、[新規]> [その他]> [Web]> [標準デプロイメント記述子(web.xml)]を選択します。
みすぼらしい

2

pom.xmlがProjectフォルダーに適切に配置されていることを確認してください。ターゲットフォルダーやその他の場所にはありません。

pom.xmlは比較的整合していないようです。


2

ファイルが/src/main/webapp/WEB-INF/web.xmlに存在しないようにフォルダー構造が変更されましたか?

この問題を解決するために、Webフォルダーにwebappという名前を付け、src / main内に配置しました。Mavenはデフォルトで/src/main/webapp/WEB-INF/web.xmlでweb.xmlを探すようです。これを行う場合、web.xmlの場所をmavenに明示的に通知する必要はありません。また、フォルダー構造を変更し、ビルドが最近機能しなくなった場合、これが原因である可能性があります。

注:これは古い投稿ですが、投稿されたソリューションは、機能しているビルドが突然機能しなくなる理由を指摘していません。


2

多くの答えがあり、それらのほとんどは機能しますが、もう1つポイントを追加します。これは重要だと思います。
ログメッセージによると、あなたはを使用していmavenます。Mavenは、いくつかの規則に基づいたプロジェクト管理構築ツールです。プロジェクトをビルドし、適切なディレクトリ構造を作成しSun Microsystems Directory Structure Standard、Java EE / Webアプリケーションに準拠する対応するディレクトリにファイルを配置します。

Mavenプラグイン、プロジェクトのルートディレクトリの変更/再構成など、多くのことを組み込むことができますが、実行できる簡単な手順が1つあり、プロジェクトは問題ありません。web.xml下に置いてsrc\main\webapp\WEB-INF\、でプロジェクトをビルドしてみてくださいmvn package

これがこの問題にもう少し光を加えることを望みます。


1

このエラーは、ファイルを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>

瓶と戦争は完全に異なる物語です。アーカイブはWebコンテナにデプロイされ、スタンドアロンのjarアプリケーションとして個別に実行されないため、ここでは戦争が必要だと思います。
Giorgi Tsiklauri

1

2020年以降failOnMissingWebXml

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>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.