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 工具
- 从子菜单中选择生成部署描述符存根
瞧!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>