一、背景
前端项目打包war包报错,项目只是简单的servlet验证,因为用不到web.xml,所以不想要专门新建WEB-INF/web.xml
二、现状
查看pom.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<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.shoko</groupId>
<artifactId>java-servlet</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
项目结构如下:

根据提示,创建一个空的 WEB-INF/web.xml 文件后,打包应该就可以通过。但是我不想要通过这种方式。
三、分析与解决方案
我的 maven-war-plugin 插件版本是2.2,旧版本的 maven-war-plugin(如 2.2 或更早版本)对 Servlet 3.0+ 的支持不够完善,强制要求 web.xml。将插件版本升级到 3.0.0 或更高版本,它们默认支持无 web.xml 的打包方式。

在pom中配置如下:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.4.0</version>
</plugin>
</plugins>
</build>
最终打包成功,见下图:


2617

被折叠的 条评论
为什么被折叠?



