Contents

Eclipse 错误:web.xml 缺失

1. 简介

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

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

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

3. 使用web.xml

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

  • 右键单击 web 项目
  • 将鼠标悬停到菜单上的Java EE 工具
  • 从子菜单中选择生成部署描述符存根

/uploads/eclipse_error_web_xml_missing/1.jpg

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

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>