Maven打包SpringBoot项目(将第三方依赖jar包和配置文件放在外部进行管理)

本文介绍了如何将SpringBoot项目的配置文件和第三方依赖从jar包中分离出来,以提升打包效率、节约服务器资源。通过将配置文件放在jar包同级的config目录,以及使用特定maven插件分离依赖,可以实现便捷运维,减少重复部署。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景:

​ SpringBoot项目可以直接打包成jar并运行,无需自己安装配置Tomcat或者其他服务器,假设项目以常规的方式打包成一个整体的jar包部署,即配置文件和第三方依赖包都包含在jar包里,就会有以下的问题:

(1)项目运行的过程中,需要改动配置文件的话需要重新打包并部署。

(2)多个第三方依赖包都相近的项目部署在同一台服务器时,各自的jar包都包含了相同的第三方依赖包(假设项目jar包有100M,第三方依赖包可能就占了99M),这样第三方依赖包冗余造成了服务器资源的浪费以及降低了项目部署的效率。

​ 将各项目的配置文件、第三方依赖包都提取到jar包外统一管理,这样既提升了项目打包效率又节约了服务器的磁盘消耗,同时项目的运维也是非常的方便,改动配置文件后只需要重启下服务就行了,无需重新构建部署。

一、配置文件放jar包外部管理

SpringBoot读取配置文件(application.properties)的优先级为

  • jar包同级目录的config目录
  • jar包同级目录
  • classPath(即resources目录)的config目录
  • classPath目录

还有一种最高优先级的方式是项目启动时通过命令的方式指定配置文件:

java –jar -Dspring.config.location=xxx/xxx/xxxx.properties xxxx.jar

如果SpringBoot项目在优先级更高的位置找到了配置,就会忽略优先级更低的配置

所以我们只需要把配置文件拷贝出来放到与jar包同级的config目录中即可

在这里插入图片描述

二、分离第三方依赖包到jar包外部管理

  • 步骤一:正常编译jar包,解压获取第三方依赖包文件lib

(1)在pom文件中添加以下插件

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <mainClass>com.example.testdocker.TestdockerApplication</mainClass>
                    <layout>ZIP</layout>
            	</configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

(2)使用IDEA右侧边栏maven projects打包

双击Lifecycle目录

点击clean进行清理

之后点击package打包

看到控制台输出BUILD SUCCESS即打包成功

(3)将编译的jar包解压,拷贝BOOT-INT目录下的lib文件夹到项目部署的文件夹
在这里插入图片描述

在这里插入图片描述

  • 步骤二:修改pom.xml配置,编译出不带lib文件夹的jar包
<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <mainClass>com.example.testdocker.TestdockerApplication</mainClass>
                    <layout>ZIP</layout>
                    <includes>
                        <include>
                            <groupId>nothing</groupId>
                            <artifactId>nothing</artifactId>
                        </include>
                    </includes>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

将jar包放入项目部署文件夹下

在这里插入图片描述

三、运行项目

将解压出来的lib文件夹,jar包,配置文件放到同一目录,运行下面命令

在这里插入图片描述

备注:

将/path/to/改成实际的路径。

-Dloader.path=lib文件夹路径

1、通常,一个工程项目架构确定后,引入的jar包基本上不会变,改变的大部分是业务逻辑;

2、后面如果需要变更业务逻辑,只需要轻量地编译工程,大大提高项目部署的效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值