web.xmlがなく、<failOnMissingWebXml>がtrueに設定されている


142

考慮してください:

ここに画像の説明を入力してください

Eclipseで単純なMavenプロジェクトを作成すると、次のエラーが発生します。

web.xmlがなく、<failOnMissingWebXml>trueに設定されている

この問題を解決するにはどうすればよいですか?


5
を追加する必要がありmaven-war-pluginます。これは、その構成プロパティのデフォルト値がtrueである暗黙的なプラグインです。それを明示的に宣言し、構成プロパティをfalseに設定する必要があります。詳細はこちら。または、空のweb.xmlを追加することもできます
Paul Samsotha

回答:


181

次のように行うこともできます。

  1. 上の右クリックのデプロイメント・ディスクリプタ での プロジェクトエクスプローラ
  2. [ Deployment Descriptor Stub]を選択します。

src / main / webappにWEB-INFフォルダーを生成し、その中にweb.xmlを生成します。

ここに画像の説明を入力してください


39
ビルドツールでエラーが発生したという理由だけで、コードにボイラープレートを追加することはお勧めしません。
Martijn Burger

1
@MartijnBurger上記のハックの影響の可能性について教えてくれますか?また可能であれば他の選択肢を追加してください?-私のような初心者プログラマを助けます。ありがとう。
Sendhilkumar Alalasundaram 2016年

7
代替案については、以下の私の答えを参照してください。上記の解決策は間違いではありません、それはあなたが常にあなたの最終製品をできるだけきれいにするために常に努力すべきであるということだけです。上記のソリューションを使用すると、最終的な製品は不要なweb.xml ファイルになります。代わりに、ビルドツール(つまりmaven)でこの問題を修正する必要があります。
Martijn Burger

参照することもできます:eggsylife.co.uk/2009/12/20/…–
Satyendra

これにより、プロジェクトに不要なファイルが追加されます。他のことは、web.xml approcahが古いことです。このエラーを削除したい場合は、強制更新するだけでmavenエラーはなくなります
jitendra varshney

393

これは不可解なエラーです。これは、で示されて<packaging>war</packaging>いるように、Webアプリケーションであるため、プロジェクトにweb.xmlファイルが必要であることを示しています。ただし、最近のWebアプリケーションでは、web.xmlファイルは完全にオプションです。Mavenはこの規則に追いつく必要があります。これをMaven pom.xmlに追加して、Maven が追いつくようにweb.xmlします。プロジェクトに役に立たないものを追加する必要はありません。

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.6</version>
            <configuration>
                <failOnMissingWebXml>false</failOnMissingWebXml>
            </configuration>
        </plugin>
    </plugins>
</build>

これは空を追加するよりも良い解決策です web.xmlこの方法で最終製品をクリーンに保ち、ビルドパラメーターを変更するだけだからです。

より最新のバージョンのmavenでは、より短いバージョンを使用することもできます。

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

28
この答えは他の答えよりも論理的です。
smwikipedia 2015年

7
Servlet 3.0以降の環境でを使用していて、aの実装がある場合は、Interface WebApplicationInitializerこの答えが正しいアプローチです。それはこの問題を解決する賢明な方法です- web.xmlそれなしで生きるための手順を実行した後にを追加しても意味がありません!
Geeb、2016年

4
これは空のweb.xmlを作成するよりも良い答えです
dtortola

1
Mavenなしでも機能>プロジェクトの更新。だからそれは必要ありません。
ラッキー

13
以下に示すように、構成を短くするために回答を更新することを検討してください。<properties><failOnMissingWebXml>false</failOnMissingWebXml></properties>より詳細なプラグイン構成設定の代わりに十分なものを含みます。
Olivier Cailloux 2016

32

あなたは既に/ srcに/メイン/ webappの/ WEB-INFの下のweb.xmlを持っていますが、場合、あなたはまだあなたが含まれているかどうかをチェックでき、「web.xmlのが欠落しているとtrueに設定されている」エラーが出る/ srcに/メイン/のWebアプリケーションでプロジェクトソース。

実行できる手順は次のとおりです。

  1. これを確認するには、プロジェクトを右クリックして[プロパティ]ダイアログを開き、[Deployment Assembly]を開きます。ここで、フォルダー/ src / main / webappを追加できます。設定を保存してから、
  2. Eclipseメニューの[プロジェクト]-> [クリーン...]に移動してプロジェクトをクリーンアップすると、エラーは発生しなくなります。

(私はこれをEclipse Marsで検証しました)


「Eclipse Mars」で同じ問題を経験し、あなたが説明したソリューションは完璧に機能します!ありがとう
Hartmut P.15年

私にとってはうまくいきませんでした...私はすでにそれらのフォルダーを持っていますし、web.xml行方不明のfalseを設定しようとしました。動作していません...
Baradwaj Aryasomayajula

19

Spring Tool Suiteを使用する場合、Generate Deployment Descriptor StubのオプションはJava EEツールの下に移動されるため、次のことができます。

  1. 右クリックあなたのプロジェクト
  2. Java EEツールを選択
  3. [ Deployment Descriptor Stub]オプションを選択します

これにより、src / main / webapp / WEB-INF /フォルダー内にweb.xmlファイルが作成され、Mavenのpom.xmlファイルからエラーが削除されます。

ここに画像の説明を入力してください


16

私は同じ問題を抱えています。勉強してグーグルしたら、問題を解決しました。

プロジェクトフォルダを右クリックして、に移動しJava EE Tools、を選択しますGenerate Deployment Descriptor Stub。これはweb.xmlフォルダに作成されますsrc/main/webapp/WEB-INF


3
ビルドツールでエラーが発生するため、コードにボイラープレートを追加することはお勧めしません。
Martijn Burger


9

Eclipseは誤ったデフォルトwebappディレクトリを認識します。したがって、で明確に設定する必要がありmaven-war-pluginます。

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-war-plugin</artifactId>
      <version>3.0.0</version>
      <configuration>
        <webappDirectory>src/main/webapp</webappDirectory>
      </configuration>
    </plugin>
  </plugins>
</build>

この設定を保存すると、削除してもエラーが発生することはありません。(理由は説明できません。)


3

'src/main/webapp/WEB-INF/'正しいのフォルダがあっても、同じ問題が発生しましたweb.xml

Maven build..実行して(maven-> eclipse)構成を再作成した後、問題は消えました mvn eclipse:clean eclipse:eclipse

次にMaven -> Update Project、(eclipse-> maven)プラグイン固有のオプションを追加しました。


ここでも同じですが、git reset --hard HEAD
Markus Barthlen

ありがとう、これも私を助けてくれました。右クリック->
Maven-

2

私はeclipseでのみこの問題に遭遇し、すべてがMavenコマンドラインで正常に機能し、私のweb.xmlファイルが存在しました。影響を受けたのは成熟したプロジェクト(既に本番環境にデプロイされている)でした。私の問題はEclipseメタデータに関係していました。.settings /フォルダー内のファイルの1つに問題があり、具体的にはorg.eclipse.wst.common.componentが変更されていました。このファイルを以前のバージョンに復元できたため、私の場合は問題が解決しました。

Yuciの答えが機能しなかったことに注意してください。EclipseのプロパティでDeployment Assemblyをクリックしようとすると、「現在表示されているページに無効な値が含まれています」というエラーが表示されました。


私も同じ状況で、org.eclipse.wst.common.componentファイルを.settings /フォルダーから復元する必要があり、プロジェクトが機能するようになりました。コンポーネントのコンテンツが削除されたため、Webへのパスがありません。 xmlファイル。また、EclipseのプロパティでDeployment Assemblyを開こうとすると、「現在表示されているページに無効な値が含まれています」という同じエラーが発生しました。私はこの答えを少し遅れて見つけましたが、これが私がそれを解決する方法です。素晴らしい答えです。
ホルヘバルデス2017

2

web.xmlが存在する プロジェクトの場合プロジェクト->プロパティ->デプロイメントアセンブリ。ここで、フォルダーsrc / main / webappを追加できます。変更を保存する。プロジェクトをクリーンアップして開始します。

web.xmlが存在しないプロジェクトの場合 プロパティタグの下のpom.xmlでfailOnMissingWebXmlをfalseに設定します。



0

たとえ必要がなくても、elcipseがweb.xmlを望んでいるだけでは意味がありません。これは、サーブレットのconatinerが埋め込まれている場合や、spring-bootのようにxml cfgなしで動作している場合に当てはまります。プロジェクトレベルまたはグローバルのEclipseでJavaEE(役に立たないもの)を単に無効にする

Eclipse/STS>Windows>Preferences>JavaEE>Doclet>Webdoclet> "uncheck" DeploymentDescriptor > OK


0

手順:プロジェクトを選択し、[Deployment Descriptor]オプションを選択して、[Generate Deployment Descriptor stub]を選択すると正常に機能します。問題は、web.xmlが常に必要になるとは限らないため、pom.xmlにfalseを追加することをお勧めします


0

を右クリック project --> New --> Other --> Standard Deployment Descriptor(web.xml)

1

次に[ 次へWEB-INF ]を押すと、web.xmlファイルが入ったフォルダが作成されます。

2

それで終わりです。




-1

プロジェクトを右クリックし、に行くのMaven - >更新プロジェクト...、その後、チェックスナップショット/リリースの強制アップデートをクリックし、[OK]を。終わった!

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