
【后端-maven打包】通过maven profile标签解决同时打jar包 war包需求
需求
使用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引入,整体看起来比较乱
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 Ric's Blog
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果