Eclipse错误:缺少web.xml并且failOnMissingWebXml设置为true

2023/05/24

1. 概述

在本教程中,我们将讨论在创建Web应用程序时遇到的常见Eclipse错误“web.xml is missing and <failOnMissingWebXml> is set to true”。

2. Eclipse错误

在Java Web应用程序中,web.xml是部署描述符的标准名称。

我们可以使用Maven创建一个Web应用程序或使用Eclipse创建动态Web项目,Eclipse不会在WEB-INF/目录下创建默认部署描述符web.xml 。

Java EE 6+规范试图不再强调部署描述符,因为它们可以被注解取代。但是,较低版本仍然需要它

failOnMissingWebXml属性是Apache Maven war插件org.apache.maven.plugins:maven-war-plugin的属性之一,此插件的默认值对于版本<3.1.0为true,对于更高版本为false。

这意味着如果我们使用早于3.1.0版本的maven-war-plugin,并且web.xml文件不存在,那么将其打包为war文件的目标将失败。

3. 使用web.xml

对于我们仍然需要web.xml部署描述符的所有情况,我们都可以在Eclipse中轻松生成web.xml

  • 右键单击web项目
  • 将鼠标悬停在菜单上的Java EE Tools
  • 从子菜单中选择Generate Deployment Descriptor

瞧!在WEB-INF/目录下生成了web.xml文件。

4. 没有web.xml

在大多数情况下,我们可能根本不需要web.xml文件。我们可以简单地完全跳过创建它,而不是在我们的项目中保留一个空白的web.xml文件。幸运的是,有两种简单的方法,具体取决于我们使用的maven-war-plugin版本。

4.1 在3.1.0之前使用maven-war-plugin

我们可以在pom.xml的<plugins>部分配置Maven项目的所有插件,正如我们之前所说,在插件版本3.1.0之前,failOnMissingWebXml的默认值为true。

让我们在pom.xml中声明maven-war-plugin并将属性failOnMissingWebXml显式设置为false

<plugin>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.4</version>
    <configuration>
        <failOnMissingWebXml>false</failOnMissingWebXml>    
    </configuration>
</plugin>

4.2 使用maven-war-plugin 3.1.0及更高版本

我们还可以通过升级maven-war-plugin的版本来避免显式设置属性,对于maven-war-plugin版本3.1.0及更高版本,属性failOnMissingWebXml的默认值为false:

<plugin>
    <artifactId>maven-war-plugin</artifactId>
    <version>3.1.0</version>
</plugin>

5. 总结

在本文中,我们了解了缺少web.xml错误背后的原因以及修复它的多种方法。

与往常一样,本教程的完整源代码可在GitHub上获得。

Show Disqus Comments

Post Directory

扫码关注公众号:Taketoday
发送 290992
即可立即永久解锁本站全部文章