Mavenプロジェクトをコンパイルすると、pom.xml
の検証フェーズでこのエラーが発生します。これは、ビルドプロセスが複雑な非常に大きなプロジェクトです。プロジェクトにはJavaScriptコードのみが含まれており、war
にコンパイルする必要はありません。私はどちらかの方法を探しています:
failOnMissingWebXml
を無効にしてエラーを無効にするだけです(重大ではないEclipseエラーのようです)完全なエラー:
Description Resource Path Location Type web.xml is missing
and <failOnMissingWebXml> is set to true pom.xml /testproject line 6
Maven Java EE Configuration Problem
エラーをクリックした後、問題はpom.xml
の次の行にあるようです:
<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>com.scs</groupId>
<artifactId>scs-control-panel</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging> **THE ERROR POINTS TO THIS LINE**
<parent>
<groupId>com.scs</groupId>
<artifactId>scs</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath>../scs</relativePath>
</parent>
<build>
</build>
<dependencies>
</dependencies>
</project>
これはEclipseのエラーなのかMavenのエラーなのかはわかりませんが、おそらくEclipseです。Mavenはコマンドラインでスムーズに実行されるためです。また、Eclipseのバグかもしれません。Eclipseを実行していますJava EE IDE for Web Developers Version:Mars.1 Release(4.5.1))。
UPDATE1:Eclipseでプロジェクトを更新しようとしましたが、違いはありませんでした。
UPDATE2:パッケージタイプをwar
からpom
に変更してみましたが、違いはありませんでした。
Mavenのすべてはプラグインを中心に展開します。プラグインは、ビルドプロセス内でいくつかの動作を実行するプログラムです。一部のプラグインのインクルードは、何も宣言する必要がないことを意味しています。
これらの暗黙のデフォルト設定があります。たとえば、maven-compiler-plugin
は、宣言せずにすべてのプロジェクトに含まれています。デフォルトの構成をオーバーライドするには、out pom.xmlファイルでプラグインを宣言し、構成を設定する必要があります。たとえば、多くのプロジェクトでは、source
とtarget
がJava 1.5。に設定されているmaven-compiler-plugin
のデフォルトをオーバーライドしています。 1.8に変更できます
<build>
<plugins>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
これは、プラグインの背後にある理論であり、何が起こっているのかを理解させるためのものです。
そうは言っても、<packaging>war<packaging>
を使用するために、何も宣言しなくてもmaven-war-plugin
が使用されます。 <packaging>jar</packaging>
を使用する場合と同様に、maven-jar-plugin
が含まれていることを意味します。
maven-war-plugin
のデフォルト構成は、web.xml
がない場合の失敗です(その構成プロパティはfailOnMissingWebXml
です)。したがって、このデフォルトをオーバーライドする場合は、プラグインを宣言してから、プロパティの値をfalse(失敗しない)に設定する必要があります
<build>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
コンパイラプラグインで、ルックアップするプロパティを使用できるようになりました。これにより、プラグインをオーバーライドすることなく、プロパティを簡単に宣言できます。このプロパティを追加するには、プロパティfailOnMissingWebXml
に値falseをプロジェクト<properties>
に追加するだけです。
<properties>
<failOnMissingWebXml>false</failOnMissingWebXml>
</properties>
これを追加するだけで、コンパイラプラグインに追加する必要がある構成がない場合、pomでコンパイラプラグインをオーバーライドして宣言する必要がなくなります。
行う:
mvn clean Eclipse:clean
これをPOMに追加します。
<packaging>war</packaging>
<properties>
<failOnMissingWebXml>false</failOnMissingWebXml>
</properties>
以下のプロパティをPOM.xmlに追加
<failOnMissingWebXml>false</failOnMissingWebXml>
Warプラグインのバージョン3を選択するのが最も簡単な方法だと思います。failOnMissingWebXmlのdefault値がtrueからfalseに変更されました。
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.0.0</version>
</plugin>
Pomに設定すると、厄介なエラーは永遠に消えます。
以下のようにこのプロパティをPOM.xmlに追加することで、この問題を解決できました。
<properties>
<failOnMissingWebXml>false</failOnMissingWebXml>
</properties>