如何配置Maven使Jenkins构建输出War而非Jar以解决Tomcat部署失败问题
Maven打包生成WAR文件的配置方案及技巧
核心配置修改
Maven的打包类型由项目根目录下的pom.xml中<packaging>标签直接控制,只需做以下修改:
- 打开项目根目录(或Web模块目录,多模块场景)的
pom.xml - 添加或修改
<packaging>标签为war:
<project> ... <packaging>war</packaging> ... </project>
常见问题排查与技巧
多模块项目的正确修改位置
若为多模块项目,父级pom.xml的打包类型通常是pom,需找到实际的Web业务模块的pom.xml进行修改,不要误改父pom。Web资源目录规范
Maven WAR插件默认要求Web资源(如html、css、WEB-INF)放在src/main/webapp目录下,若该目录不存在,Maven可能降级生成JAR包:- 快速解决:创建空的
src/main/webapp目录 - 自定义路径:若你的Web资源在其他目录,可通过WAR插件配置指定:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>3.3.2</version> <configuration> <webResources> <resource> <!-- 替换为你的Web资源实际目录 --> <directory>src/main/resources/web-resources</directory> </resource> </webResources> </configuration> </plugin> </plugins> </build>- 快速解决:创建空的
Jenkins构建的模块指定
多模块项目在Jenkins中构建时,需明确指定Web模块进行打包,避免构建整个项目时只处理父模块:
执行命令示例:mvn clean package -pl your-web-module-artifactId -am-pl:指定要构建的模块(填写Web模块的artifactId)-am:自动构建该模块依赖的其他模块
验证配置有效性
先在本地执行mvn clean package,检查target目录下是否生成.war文件,确认本地生效后再在Jenkins中执行相同命令,避免Jenkins的Maven配置与本地不一致导致的问题。
内容的提问来源于stack exchange,提问作者AMWST313
相关产品推荐
相关产品推荐

