Spring 引导的外部库文件夹

External library folder for Spring Boot

我想知道如何为我的 Spring 启动应用程序外部化所有 jdbc 驱动程序,我不想在构建应用程序后将 jdbc 驱动程序插入我的 fat jar。

有什么方法可以设置一个 java vm 参数,通知哪个外部文件夹应该包含在 jar 执行中?或者可能存在某种 spring 属性。

例如:

java  -DLib=file:\\c:\Drivers -jar sample.jar

这不是类路径的作用吗?只要 jdbc 驱动程序 jar 在类路径中,就应该可以工作。像这样:

java -classpath /path/to/driver/jar -jar application.jar

您也可以为此设置 CLASSPATH 环境变量。

请参阅有关 PropertiesLauncher 的文档:

看起来您可以使用 loader.path 属性 定义一个包含要加载的 jar 的 lib 文件夹位置——实际上 lib 文件夹(与 jar 内联)是默认位置:

loader.path (if empty) defaults to lib (meaning a local directory or a nested one if running from an archive)

CLASSPATH 和 -classpath 在 运行 Spring 引导 jar 文件的情况下将不起作用。所以有以下选项可用:

  • 使用 -Dloader.path 例如 java -cp MyOwn.jar -Dloader.path=C:\Sandeep\lib -Dconsole.level=INFO -Dloader.main=abc.Main org.springframework.boot.loader.PropertiesLauncher --spring.config.name=申请

  • 将其他 jar 文件放入 JRE/lib/ext 目录的另一种选择

  • 第三个选项,用 WinRAR 应用程序打开 Spring Boot Jar 并将 jar 文件添加到 Spring Boot jar