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

时间:2015-11-04 19:10:16

标签: eclipse maven java-ee war pom.xml

编译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,但没有区别。

5 个答案:

答案 0 :(得分: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>

答案 1 :(得分:8)

  1. 执行:

    *(this+neighborOffset)
  2. 将此添加到您的POM:

    mvn clean eclipse:clean
    

答案 2 :(得分:2)

将以下属性添加到POM.xml

 <failOnMissingWebXml>false</failOnMissingWebXml>

答案 3 :(得分: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,讨厌的错误就永远消失了。

答案 4 :(得分:0)

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

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