【后端-maven打包】通过profile标签解决同时打jar包 war包需求

通过maven profile标签解决同时打jar包 war包需求

需求

使用maven打包时同时产出jar和war

解决思路

通过maven profiles的特性 + Jenkins 解决一键打两包问题

解决步骤

  1. 修改pom.xml packaging标签,使用占位符
<packaging>${project.packaging}</packaging>
  1. 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下面

  1. 配置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版本通用-插件二次开发利器(一)

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
spring-boot-maven-plugin 是一个 Maven 插件,它可以将 Spring Boot 应用程序打包成可执行的 JAR 文件,同时也可以将应用程序的依赖项打包成内置的 JAR 文件。这个插件还有一个很棒的功能,就是它可以将应用程序的配置文件打包到 JAR 之外,这样在应用程序升级时,可以直接替换现有的 JAR 文件而不需要担心会覆盖配置文件。 在默认的情况下,Spring Boot 将 application.properties 或者 application.yml 文件打包到 JAR 的根目录下,这种默认的方式并不是最好的,因为在应用程序升级时,配置文件会被一起打包进去,这样会产生一些困扰,比如你需要手动备份这些配置文件。 为了解决这个问题,spring-boot-maven-plugin 插件提供了一个很好的解决方案,就是将配置文件打包到 JAR 之外,具体的做法是在 pom.xml 文件中添加如下配置: ```xml <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <classifier>exec</classifier> </configuration> <executions> <execution> <id>repackage</id> <goals> <goal>repackage</goal> </goals> <configuration> <classifier>exec</classifier> <compress>false</compress> <shutdown>graceful</shutdown> <finalName>${project.artifactId}-${project.version}-exec</finalName> </configuration> </execution> </executions> </plugin> </plugins> </build> ``` 这个配置中添加了一个 classifier 属性,它会创建一个带有 exec 后缀的 JAR ,该 JAR 除了含应用程序的类文件和依赖项,还会配置文件和其他静态资源文件。在 pom.xml 文件中加入以上配置,并在应用程序的根目录下创建一个名为 config 的目录,将配置文件放置在该目录中,然后重新编译和打包应用程序,你将会得到一个新的 JAR 文件,该文件会在根目录下生成一个名为 config 的文件夹,其中含你的配置文件。这样就实现了将配置文件打包到 JAR 之外的目的。 总结一下,spring-boot-maven-plugin 插件提供了一个将应用程序的配置文件打包到 JAR 之外的方式,只需要在 pom.xml 文件中配置一个 classifier 属性即可实现。这样可以避免在应用程序升级时面临配置文件被覆盖的问题,也便于组织和管理配置文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fun肆编程

欢迎投喂

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值