Maven 普通项目转为 Web 项目:完整步骤与配置解析
将普通 Maven 项目(Jar 打包)转为 Web 项目(War 打包)只需简单几步即可完成,核心是调整目录结构和打包方式。本文将详细介绍转换步骤、目录规范及常见问题解决。
核心转换步骤
修改打包方式为 War
在 pom.xml
中设置 <packaging>
为 war
(默认是 jar
),这是 Web 项目的标志性配置:
1 | <project> |
设置后,Maven 会按照 Web 项目的规则进行构建(如打包为 .war
文件)。
创建 Web 标准目录结构
Maven 对 Web 项目的目录结构有约定,需手动创建以下目录和文件:
1 | src/ |
webapp
:Web 资源的根目录,打包后会作为 WAR 包的根目录。WEB-INF
:存放 Web 应用的配置文件(如web.xml
),该目录下的资源无法通过浏览器直接访问,安全性高。web.xml
:Web 应用的核心配置文件,定义 Servlet、过滤器、欢迎页等(Servlet 3.0+ 可注解配置,但建议保留基础配置)。
配置 web.xml
(基础示例)
web.xml
是 Web 项目的标配,即使使用注解开发,也建议保留基础结构:
1 |
|
验证转换结果
构建 WAR 包
执行打包命令,验证是否生成 .war
文件:
1 | mvn clean package |
成功后,在 target
目录下会生成 my-webapp-1.0-SNAPSHOT.war
(文件名由 ${project.build.finalName}
决定)。
查看 WAR 包结构
解压 WAR 包,确认目录结构是否符合预期:
1 | my-webapp-1.0-SNAPSHOT.war/ |
适配 IDE(以 IDEA 为例)
转换后,IDE 可能不会自动识别为 Web 项目,需手动配置:
- 打开 Project Structure(
F4
或File > Project Structure
)。 - 选择 Modules → 切换到 Web 标签。
- 点击 + 按钮,设置
Web Resource Directory
为src/main/webapp
。 - 确认
Deployment Descriptors
中已添加web.xml
(路径为src/main/webapp/WEB-INF/web.xml
)。 - 点击 OK 保存配置,项目图标会变为 Web 项目标识(带地球图标)。
常见问题与解决方案
1. 缺少 web.xml
导致打包失败
错误提示:Failed to execute goal org.apache.maven.plugins:maven-war-plugin:...:war (default-war) on project ...: Error assembling WAR: webxml attribute is required
解决:
- 确保
src/main/webapp/WEB-INF/web.xml
存在。 - 若使用 Servlet 3.0+ 注解(无
web.xml
),需在pom.xml
中配置插件忽略检查:
1 | <build> |
2. 自定义 Web 资源目录(非 webapp
)
若 Web 资源目录为 src/main/WebContent
(如 Eclipse 习惯),需在 pom.xml
中配置:
1 | <build> |
v1.3.10