我有一个Spring Boot应用程序,它将被部署为胖子。它与Atlassian的Crowd集成以进行身份验证。这要求crowd.properties
文件在类路径上可用。我不希望将属性文件(包括密码)与jar捆绑在一起。
是否可以告诉Spring Boot包括另一个文件或目录以在哪里搜索属性文件?
过去使用独立/外部Tomcat进行此操作时,我将使用shared.loader
中的catalina.properties
属性来指定可用于其他属性文件的目录。
我尝试将文件包含在jar的根位置以及/config
位置,但无济于事。 Atlassian也有一个页面,指示使用-Dcrowd.properties=...
命令行参数进行设置,但无济于事。
注意:在外部位置引用application.properties
是不是。
答案 0 :(得分:0)
好的,因此我能够借助this answer,特别是“原始答案”部分中的内容来解决这个问题。
事实证明,需要两部分的解决方案。
layout
设置为ZIP
,它将使用PropertiesLauncher
而不是JarLauncher
,(我相信)它可以使用加载程序属性。`
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<layout>ZIP</layout>
</configuration>
</plugin>
-Dloader.path=/folder/with/property/file/
命令行参数来提供属性文件的位置。注意:必须在-jar
参数之后 。有关为什么的更多信息,请继续阅读。
基于Spring文档“ Launching Executable Jars”,有三个启动器可以为应用程序加载文件。默认情况下,使用JarLauncher
,它限制了您可以检索资源的位置。另一方面,PropertiesLauncher
会显示在BOOT-INF/lib/
中,但也会出现在loader.path
中,您可以在其中提供其他文件夹。