需求
使用maven打包时同时产出jar和war
解决思路
通过maven profiles的特性 + Jenkins 解决一键打两包问题
解决步骤
- 修改pom.xml packaging标签,使用占位符
<packaging>${project.packaging}</packaging>
- pom.xml添加多profiles
<profiles>
<profile>
<id>prod-jar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<project.packaging>jar</project.packaging>
</properties>
</profile>
<profile>
<id>prod-tomcat</id>
<properties>
<project.packaging>war</project.packaging>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>tomcat-starterspring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
ps:maven依赖引入原则:(1)最短路径、(2)引入顺序自上而下。因此,profiles尽量写在denpendences下面
- 配置Jenkins
jar包命令为:
mvn celan package -DskipTests
war包命令为:
mvn clean package -Pprod-tomcat -DskipTests
优点
环境之间隔离,如果war包对应不同的中间件比如jetty、东方通等,profile之间可以隔离,排除不同的依赖,便于后期维护扩展
缺点
不能做到像springboot那样自定义各种yml来通过spring.profiles.active引入,整体看起来比较乱
- 最后:欢迎点赞、关注、收藏!!!
【前端-开发环境】使用NVM实现不同nodejs版本的自由切换(NVM完整安装使用手册)
【前端-NPM私服】内网使用verdaccio搭建私有npm服务器
【前端-IE兼容】Win10和Win11使用Edge调试前端兼容IE6、IE7、IE8、IE9、IE10、IE11问题
【工具-Shell脚本】java程序产品包模板-linux和windows通用shell启动停止脚本(无需系统安装Java运行环境)
【工具-Nginx】Nginx高性能通用配置文件-注释版-支持防刷限流、可控高并发、HTTP2、防XSS、Gzip、OCSP Stapling、负载、SSL
【工具-WireShark】网络HTTP抓包使用教程
【后端-SpringCache】基于Spring Cache封装一个能够批量操作的Redis缓存记录下踩坑历程(pipeline或mget封装)
【后端-SkyWalking】SkyWalking前后端开发环境搭建详细教程步骤-6.x/7.x/8.x版本通用-插件二次开发利器(一)