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

时间:2018-08-07 21:32:08

标签: spring-boot tomcat atlassian-crowd

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

是否可以告诉Spring Boot包括另一个文件或目录以在哪里搜索属性文件?

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

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

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

1 个答案:

答案 0 :(得分:0)

好的,因此我能够借助this answer,特别是“原始答案”部分中的内容来解决这个问题。

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

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

`

<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参数之后

有关为什么的更多信息,请继续阅读。

基于Spring文档“ Launching Executable Jars”,有三个启动器可以为应用程序加载文件。默认情况下,使用JarLauncher,它限制了您可以检索资源的位置。另一方面,PropertiesLauncher会显示在BOOT-INF/lib/中,但也会出现在loader.path中,您可以在其中提供其他文件夹。