我有一个Spring Boot应用程序,它将被部署为胖子。它与Atlassian的Crowd集成以进行身份验证。这要求crowd.properties文件在类路径上可用。我宁愿不将属性文件(包括密码)与jar捆绑在一起。
crowd.properties
有没有办法告诉Spring Boot包括另一个文件或目录,以在哪里搜索属性文件?
过去使用独立/外部Tomcat进行此操作时,我将使用中的shared.loader属性catalina.properties指定一个目录,在该目录中可以使用其他属性文件。
shared.loader
catalina.properties
我试过将文件包含在jar的根目录以及该/config位置中,但无济于事。Atlassian也有一个页面,该页面指示使用-Dcrowd.properties=...命令行参数进行设置,但无济于事。
/config
-Dcrowd.properties=...
注意:这 不在application.properties外部位置引用。
application.properties
好的,因此我能够借助此答案(特别是“原始答案”下的部分)解决此问题
事实证明,需要两部分的解决方案。
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
有关 why的 更多信息,请继续阅读。
根据Spring的“ 启动可执行Jars ” 文档,有三个启动器可以为应用程序加载文件。默认情况下JarLauncher使用,它限制了您可以检索资源的位置。在PropertiesLauncher另一方面会看在BOOT- INF/lib/而且在loader.path,你可以提供额外的文件夹。
BOOT- INF/lib/
loader.path