0

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

有没有办法告诉 Spring Boot 包含另一个文件或目录来搜索属性文件的位置?

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

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

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

4

1 回答 1

0

好的,所以我能够在这个答案的帮助下解决这个问题,特别是“原始答案”下的部分。

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

  1. spring-boot-maven-plugin 需要设置一些配置。通过设置layoutto 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参数之后。

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

基于“启动可执行 Jar ”的 Spring 文档,有三个启动器来加载应用程序的文件。默认情况下JarLauncher使用 ,这限制了您可以检索资源的位置。PropertiesLauncher另一方面,将在其中查找,您可以BOOT-INF/lib/loader.path其中提供其他文件夹。

于 2018-08-08T18:53:27.587 回答