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

背景:

​ 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目录中即可

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

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

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

(1)在pom文件中添加以下插件
Maven打包SpringBoot项目(将第三方依赖jar包和配置文件放在外部进行管理)

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

双击Lifecycle目录

点击clean进行清理

之后点击package打包

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

(3)将编译的jar包解压,拷贝BOOT-INT目录下的lib文件夹到项目部署的文件夹
Maven打包SpringBoot项目(将第三方依赖jar包和配置文件放在外部进行管理)

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

  • 步骤二:修改pom.xml配置,编译出不带lib文件夹的jar包
    Maven打包SpringBoot项目(将第三方依赖jar包和配置文件放在外部进行管理)

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

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

三、运行项目

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

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

备注:

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

-Dloader.path=lib文件夹路径

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

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