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

Pet*_* G. 6 eclipse war java-ee pom.xml maven

编译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
Run Code Online (Sandbox Code Playgroud)

点击错误后问题似乎出现在以下行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>
Run Code Online (Sandbox Code Playgroud)

不确定这是Eclipse还是Maven错误,但可能是Eclipse,因为Maven通过命令行顺利运行.它也可能是Eclipse中的一个错误,我正在运行Eclipse Java EE IDE for Web Developers Version:Mars.1 Release(4.5.1).

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

UPDATE2:我尝试将包类型更改warpom但没有区别.

Pau*_*tha 16

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>
Run Code Online (Sandbox Code Playgroud)

这只是插件背后的一些理论,可以让您了解正在发生的事情.

话虽如此,为了使用<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>
Run Code Online (Sandbox Code Playgroud)


que*_*com 9

  1. 做:

    mvn clean eclipse:clean
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将其添加到您的POM:

    <packaging>war</packaging>
    <properties>
        <failOnMissingWebXml>false</failOnMissingWebXml>
    </properties>
    
    Run Code Online (Sandbox Code Playgroud)