
本文详解 Maven 项目生成 WAR 包的核心配置:必须在 pom.xml 中声明 war,并确保项目遵循标准 Web 应用目录结构(含 src/main/webapp/WEB-INF/web.xml 等关键路径)。
本文详解 maven 项目生成 war 包的核心配置:必须在 pom.xml 中声明 `
在 Java Web 开发与 DevOps 流程中(如 Jenkins + Maven + Tomcat 部署),若构建产物始终为 .jar 而非预期的 .war,导致部署到 Tomcat 失败,根本原因通常不是 Jenkins 配置或插件问题,而是 Maven 项目自身的打包类型未正确声明。以下为清晰、可落地的解决方案:
✅ 第一步:确认并设置正确的打包类型
Maven 默认以 jar 作为
<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.example</groupId>
<artifactId>my-web-app</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- 关键:必须设为 war -->
<packaging>war</packaging>
<!-- 其他配置(依赖、插件等) -->
</project>⚠️ 注意:该标签需位于
✅ 第二步:验证项目目录结构符合 WAR 规范
Maven War Plugin 默认期望标准 Web 工程布局。请确保你的源码结构包含:
my-web-app/
├── pom.xml
└── src/
└── main/
├── java/ # Java 源码(如 Servlet、Controller)
├── resources/ # 非代码资源(properties、YAML 等)
└── webapp/ # Web 根目录(必需)
├── WEB-INF/
│ └── web.xml # 可选(Servlet 3.0+ 可注解替代,但建议保留以明确兼容性)
├── index.jsp
└── static/ # CSS/JS/图片等静态资源(按需)? 提示:src/main/webapp 是 WAR 插件识别 Web 内容的默认路径。若使用 Spring Boot,其默认打包为可执行 JAR(内嵌 Tomcat),此时需额外配置(如 spring-boot-starter-tomcat 设为 provided 并继承 SpringBootServletInitializer),但本场景面向传统 Java Web 项目,不适用此路径。
艺帆网络工作室网站源码1.7.5下载艺帆网络工作室网站源码,是国庆后新一批新概念的网站源码,采用流行的Html5和JS组合流畅顺滑,界面清晰明朗,适合科技类企业和公司建站使用。如果你是想成为一家独特的设计公司,拥有独特的文化,追求品质,而非数量与规模。 这种坚持一直贯穿于项目运作之中,从品牌建立、形象推广设计到品牌形象管理。那可以考虑使用这款艺帆网络工作室网站源码。 这款源码中服务项目和团队程序需要在_template文件夹下的in
✅ 第三步:触发构建并验证输出
完成上述修改后,在项目根目录执行:
mvn clean package
成功时,控制台将显示类似日志:
[INFO] Building war: /path/to/my-web-app/target/my-web-app-1.0-SNAPSHOT.war
检查 target/ 目录下是否生成 .war 文件(而非 .jar),并可通过 jar -tf target/*.war | head -20 快速查看内部结构(应含 WEB-INF/ 目录)。
⚠️ 常见误区与排查建议
- ❌ 错误:仅修改
但缺少 src/main/webapp/WEB-INF/ —— Maven 仍会生成 WAR,但内容为空或无法被 Tomcat 识别; - ❌ 错误:在 pom.xml 中重复定义
或置于 内而未激活; - ✅ 推荐:首次配置后运行 mvn help:effective-pom 查看最终生效的 POM,确认
值确为 war; - ✅ Jenkins 集成提示:无需修改 Jenkins 构建步骤(如 mvn clean package),只需确保工作区中的 pom.xml 已正确配置——Git 仓库提交更新后的 pom 即可。
遵循以上三步,即可稳定产出符合 Tomcat 部署要求的 WAR 包。记住核心原则:Maven 的打包行为由 pom.xml 的










