小编典典

在Spring Boot Fat Jar中使用外部第三方属性文件

spring-boot

我有一个Spring
Boot应用程序,它将被部署为胖子。它与Atlassian的Crowd集成以进行身份​​验证。这要求crowd.properties文件在类路径上可用。我宁愿不将属性文件(包括密码)与jar捆绑在一起。

有没有办法告诉Spring Boot包括另一个文件或目录,以在哪里搜索属性文件?

过去使用独立/外部Tomcat进行此操作时,我将使用中的shared.loader属性catalina.properties指定一个目录,在该目录中可以使用其他属性文件。

我试过将文件包含在jar的根目录以及该/config位置中,但无济于事。Atlassian也有一个页面,该页面指示使用-Dcrowd.properties=...命令行参数进行设置,但无济于事。

注意:这 不在application.properties外部位置引用。


阅读 353

收藏
2020-05-30

共1个答案

小编典典

好的,因此我能够借助此答案(特别是“原始答案”下的部分)解决此问题

事实证明,需要两部分的解决方案。

  1. spring-boot-maven-plugin需要进行一些配置。通过将设置layoutZIP,它将使用PropertiesLauncher而不是JarLauncher,(我相信)可以使用loader属性。

`

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <layout>ZIP</layout>
    </configuration>
</plugin>
  1. 使用-Dloader.path=/folder/with/property/file/命令行参数提供属性文件的位置。注:这一定要来 -jar参数。

有关 why的 更多信息,请继续阅读。

根据Spring的“ 启动可执行Jars

文档,有三个启动器可以为应用程序加载文件。默认情况下JarLauncher使用,它限制了您可以检索资源的位置。在PropertiesLauncher另一方面会看在BOOT- INF/lib/而且在loader.path,你可以提供额外的文件夹。

2020-05-30