在 Eclipse 中验证 pom.xml 时出现 FailOnMissingWebXml 错误
FailOnMissingWebXml error when validating pom.xml in Eclipse
编译 Maven 项目时,我在 pom.xml
的验证阶段遇到此错误。这是一个相当大的项目,具有复杂的构建过程。该项目只包含 Java 脚本代码,不必编译成 war
。我正在寻找一种方法:
- 只需通过禁用
failOnMissingWebXml
来禁用该错误(它似乎是一个非严重的 Eclipse 错误)
- 在 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).
更新 1:我尝试在 Eclipse 中更新项目,但没有任何区别。
更新 2:我尝试将包裹类型从 war
更改为 pom
但没有区别。
做:
mvn clean eclipse:clean
将此添加到您的 POM:
<packaging>war</packaging>
<properties>
<failOnMissingWebXml>false</failOnMissingWebXml>
</properties>
Maven 中的一切都围绕插件展开。插件是在构建过程中执行某些行为的程序。一些插件包含是隐含的,我们无需声明任何内容。
这些隐含的插件具有默认配置。例如,maven-compiler-plugin
包含在所有项目中而无需声明它。要覆盖默认配置,我们需要在 pom.xml 文件中声明插件并设置配置。例如,您会看到许多项目覆盖 maven-compiler-plugin
上的默认版本,其中 source
和 target
设置为 Java 1.5。我们可以改成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>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
更新
war 插件现在允许您只使用它要查找的 属性。这允许您简单地声明 属性 而不必覆盖插件。要添加此 属性,您只需将值为 false 的 属性 failOnMissingWebXml
添加到项目 <properties>
<properties>
<failOnMissingWebXml>false</failOnMissingWebXml>
</properties>
只需添加这个,如果您没有进一步的配置需要添加到编译器插件,您将不再需要在 pom 中重写和声明编译器插件。
更新 2
因此,如果您声明 maven-war-plugin
并使用 <version>
3.0.0+,则没有 web.xml 失败的默认值将设置为 false,因此我们不再需要覆盖配置 属性,尽管我们仍然需要声明插件。
将下面的属性添加到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>
编译 Maven 项目时,我在 pom.xml
的验证阶段遇到此错误。这是一个相当大的项目,具有复杂的构建过程。该项目只包含 Java 脚本代码,不必编译成 war
。我正在寻找一种方法:
- 只需通过禁用
failOnMissingWebXml
来禁用该错误(它似乎是一个非严重的 Eclipse 错误) - 在 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).
更新 1:我尝试在 Eclipse 中更新项目,但没有任何区别。
更新 2:我尝试将包裹类型从 war
更改为 pom
但没有区别。
做:
mvn clean eclipse:clean
将此添加到您的 POM:
<packaging>war</packaging> <properties> <failOnMissingWebXml>false</failOnMissingWebXml> </properties>
Maven 中的一切都围绕插件展开。插件是在构建过程中执行某些行为的程序。一些插件包含是隐含的,我们无需声明任何内容。
这些隐含的插件具有默认配置。例如,maven-compiler-plugin
包含在所有项目中而无需声明它。要覆盖默认配置,我们需要在 pom.xml 文件中声明插件并设置配置。例如,您会看到许多项目覆盖 maven-compiler-plugin
上的默认版本,其中 source
和 target
设置为 Java 1.5。我们可以改成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>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
更新
war 插件现在允许您只使用它要查找的 属性。这允许您简单地声明 属性 而不必覆盖插件。要添加此 属性,您只需将值为 false 的 属性 failOnMissingWebXml
添加到项目 <properties>
<properties>
<failOnMissingWebXml>false</failOnMissingWebXml>
</properties>
只需添加这个,如果您没有进一步的配置需要添加到编译器插件,您将不再需要在 pom 中重写和声明编译器插件。
更新 2
因此,如果您声明 maven-war-plugin
并使用 <version>
3.0.0+,则没有 web.xml 失败的默认值将设置为 false,因此我们不再需要覆盖配置 属性,尽管我们仍然需要声明插件。
将下面的属性添加到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>