在Eclipse中验证pom.xml时出现FailOnMissingWebXml错误

问题描述 投票:5回答:5

在编译Maven项目时,我在pom.xml的验证阶段遇到此错误。这是一个包含复杂构建过程的大型项目。该项目仅包含JavaScript代码,不必编译为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)。

UPDATE1:我尝试在Eclipse中更新项目,但没有区别。

UPDATE2:我尝试将包类型从war更改为pom,但没有区别。

eclipse maven java-ee war pom.xml
5个回答
16
投票

Maven中的所有内容都围绕着插件。插件是在构建过程中执行某些行为的程序。隐含一些插件内容而我们不必声明任何内容。

这些暗示具有默认配置。例如,maven-compiler-plugin包含在所有项目中,无需声明它。要覆盖默认配置,我们需要在pom.xml文件中声明插件并设置配置。例如,你会看到许多项目覆盖maven-compiler-plugin上的默认值,它的sourcetarget设置为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>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <failOnMissingWebXml>false</failOnMissingWebXml>    
            </configuration>
        </plugin>
    </plugins>
</build>

8
投票
  1. 做: mvn clean eclipse:clean
  2. 将其添加到您的POM: <packaging>war</packaging> <properties> <failOnMissingWebXml>false</failOnMissingWebXml> </properties>

2
投票

将以下属性添加到POM.xml

 <failOnMissingWebXml>false</failOnMissingWebXml>

0
投票

我想最简单的方法是选择war插件版本3. failOnMissingWebXml的默认值已从true更改为false。

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

一旦进入你的pom,那令人讨厌的错误永远消失了。


0
投票

我能够通过在POM.xml中添加此属性来解决此问题,如下所示。

<properties>
<failOnMissingWebXml>false</failOnMissingWebXml>
</properties>
© www.soinside.com 2019 - 2024. All rights reserved.