Springboot、Tomcat启动加载外部指定文件夹下的jar文件
背景
把项目中的公共jar包提取出来,放到自定义lib库文件夹中,方便统一分布式项目中依赖的jar版本,springboot是jar方式启动,Tomcat是直接start启动,加载外部jar的方式不同,下面分别介绍两种配置
配置
springboot
maven配置
主要是配置一个plugin,mainClass是启动类的全名,layout需要指定为zip
layout可以指定的类型有jar、war、和zip
这三种在maven打包之后生成的jar文件中的结构不同,下图是zip方式打包出来的格式
可以看出launcher使用的是org.springframework.boot.loader.PropertiesLauncher
jar方式对应的是JarLauncher
war方式对应的是WarLauncher
通过zip方式在启动时可以指定外部文件夹地址
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.xxx.Application</mainClass>
<layout>ZIP</layout>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
启动
通过指定loader.path加载外部资源库
java -Dloader.path=/home/java/mylib -jar xx.jar
Tomcat配置
catalina.properties
修改conf文件夹下的catalina.properties文件
修改common.loader的值,在最后添加上外部资源库的地址
common.loader="${catalina.base}/lib","${catalina.base}/lib/*.jar","${catalina.home}/lib","${catalina.home}/lib/*.jar","/home/java/mylib/*.jar"
启动正常启动即可