0%

maven转为web项目

Maven 普通项目转为 Web 项目:完整步骤与配置解析

将普通 Maven 项目(Jar 打包)转为 Web 项目(War 打包)只需简单几步即可完成,核心是调整目录结构和打包方式。本文将详细介绍转换步骤、目录规范及常见问题解决。

核心转换步骤

修改打包方式为 War

pom.xml 中设置 <packaging>war(默认是 jar),这是 Web 项目的标志性配置:

1
2
3
4
5
6
7
<project>
<groupId>com.example</groupId>
<artifactId>my-webapp</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging> <!-- 关键:声明为 Web 项目 -->
<name>My Web Application</name>
</project>

设置后,Maven 会按照 Web 项目的规则进行构建(如打包为 .war 文件)。

创建 Web 标准目录结构

Maven 对 Web 项目的目录结构有约定,需手动创建以下目录和文件:

1
2
3
4
5
6
7
8
9
10
11
src/
└── main/
├── java/ # 主程序源码(已有,无需修改)
├── resources/ # 配置文件(已有,无需修改)
└── webapp/ # Web 资源根目录(新增)
├── WEB-INF/ # 受保护的 Web 目录(新增)
│ └── web.xml # Web 应用配置文件(新增,核心)
├── index.jsp # 示例页面(可选)
├── css/ # 样式文件目录(可选)
├── js/ # 脚本文件目录(可选)
└── img/ # 图片资源目录(可选)
  • webapp:Web 资源的根目录,打包后会作为 WAR 包的根目录。
  • WEB-INF:存放 Web 应用的配置文件(如 web.xml),该目录下的资源无法通过浏览器直接访问,安全性高。
  • web.xml:Web 应用的核心配置文件,定义 Servlet、过滤器、欢迎页等(Servlet 3.0+ 可注解配置,但建议保留基础配置)。

配置 web.xml(基础示例)

web.xml 是 Web 项目的标配,即使使用注解开发,也建议保留基础结构:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">

<!-- 欢迎页(访问项目根路径时默认打开的页面) -->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>

<!-- 示例:配置 Servlet(可选,根据框架需求添加) -->
<!--
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>com.example.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/my-servlet</url-pattern>
</servlet-mapping>
-->
</web-app>

验证转换结果

构建 WAR 包

执行打包命令,验证是否生成 .war 文件:

1
mvn clean package

成功后,在 target 目录下会生成 my-webapp-1.0-SNAPSHOT.war(文件名由 ${project.build.finalName} 决定)。

查看 WAR 包结构

解压 WAR 包,确认目录结构是否符合预期:

1
2
3
4
5
6
7
8
my-webapp-1.0-SNAPSHOT.war/
├── WEB-INF/
│ ├── classes/ # 编译后的 class 文件(来自 src/main/java 和 resources)
│ ├── lib/ # 依赖的 Jar 包
│ └── web.xml # Web 配置文件
├── index.jsp # 根目录页面
├── css/ # 样式文件
└── ...(其他静态资源)

适配 IDE(以 IDEA 为例)

转换后,IDE 可能不会自动识别为 Web 项目,需手动配置:

  1. 打开 Project StructureF4File > Project Structure)。
  2. 选择 Modules → 切换到 Web 标签。
  3. 点击 + 按钮,设置 Web Resource Directorysrc/main/webapp
  4. 确认 Deployment Descriptors 中已添加 web.xml(路径为 src/main/webapp/WEB-INF/web.xml)。
  5. 点击 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
2
3
4
5
6
7
8
9
10
11
12
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.3.2</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml> <!-- 允许缺少 web.xml -->
</configuration>
</plugin>
</plugins>
</build>

2. 自定义 Web 资源目录(非 webapp

若 Web 资源目录为 src/main/WebContent(如 Eclipse 习惯),需在 pom.xml 中配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.3.2</version>
<configuration>
<webappDirectory>${project.build.directory}/${project.artifactId}</webappDirectory>
<warSourceDirectory>src/main/WebContent</warSourceDirectory> <!-- 自定义目录 -->
</configuration>
</plugin>
</plugins>
</build>

欢迎关注我的其它发布渠道

表情 | 预览
快来做第一个评论的人吧~
Powered By Valine
v1.3.10