web-dev-qa-db-ja.com

Mavenで "webxml属性が必要です"というエラーが表示される

次のようなエラーが表示されます。

WARの組み立て中にエラーが発生しました:webxml属性が必要です(または更新モードで実行する場合は既存のWEB-INF/web.xml)

私はweb.xmlという正しい場所にprojectname\src\main\webapp\WEB-INF\web.xmlを持っています

これは何の原因と考えられますか?

297
user617966

あなたのMaven戦争のプラグインのコードスニペットを提供することができればそれは役に立ちます。 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>
343
Arpit
<plugin>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.4</version>
    <configuration>
        <failOnMissingWebXml>false</failOnMissingWebXml>
    </configuration>
</plugin>

この解決策は私にはうまくいきます(私は以前2.2を使っていました)。また、Servlet 3.0にはJavaベースの設定を使用しているので、web.xmlファイルは必要ありません。

130
srv

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

<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>
80
Burhan ARAS

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

例えば:

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

詳細についてはブログを参照してください。 https://ankurjain26.blogspot.in/2017/05/error-assembling-war-webxml-attribute.html

25
Ankur jain

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

私のwebXmlタグの値は動作するためにはこのように見える必要がありました:

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

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

WEB-INFの下にsrc/main/webbappという名前の新しいフォルダを作成します

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

これであなたのweb.xmlが生成されるはずです。

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

14

それはあなたが正しい場所にweb.xmlを持っているように見えますが、そうであっても、このエラーはしばしばMavenが見ることを期待するものと一致しないディレクトリ構造によって引き起こされます。たとえば、Mavenを使用して構築しようとしているEclipse Webアプリケーションから始めるとします。

それが問題である場合は、簡単な解決策は
src/main/Javaとa
src/main/webappディレクトリ(および必要に応じて他のディレクトリ)に移動し、ファイルを移動するだけです。

これがmavenディレクトリレイアウトの概要です。 http://maven.Apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html

13
MattC

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

それは私にとってもうまくいった。

        <plugin>
            <groupId>org.Apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <configuration>
                <webXml>WebContent\WEB-INF\web.xml</webXml>
            </configuration>
        </plugin>
5
Vineet kaushik

ドキュメンテーションに従って、それは言う: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>

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

maven-war-plugin 2.3はこれを修正します。

<build>
    <plugins>
        <plugin>
            <groupId>org.Apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.3</version>
        </plugin>
        ...
5
gabor

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

Eclipseでデプロイメント記述子を再生成します

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

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

  1. プロジェクトフォルダを右クリック
  2. コンテキストメニューで[Open Module Settings]を選択し、[+]をクリックしてWeb配置記述子を追加します。 Generate the deployment descriptor
  3. その後、パスを自分のディスクリプタまたはWebリソースディレクトリに変更し、右側に移動します。
  4. そうすると次のようになります。 Project structure
4
KeyMaker00

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

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

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

2
Usman Mutawakil

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

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

2
Meghashyam

このエラーは、Mavenにファイルをwarにパッケージ化するように指示したために発生します。

<packaging>war</packaging>

本当に戦争が必要ですか?そうでない場合は、そこにjarを置きます。これは完全なコードです。

<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>
1
Yuliia Ashomok

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

Mavenプラグイン、プロジェクトのルートディレクトリの変更/再設定など、多くのことを組み込むことができますが、1つの簡単なステップがあり、プロジェクトは問題ないはずです。 web.xmlsrc\main\webapp\WEB-INF\の下に配置して、mvn packageでプロジェクトをビルドしてみてください。

私はこれがこの問題にもう少し光を加えることを望む。

0