代码之家  ›  专栏  ›  技术社区  ›  mnd

将外部第三方属性文件与Spring boot fat jar一起使用

  •  0
  • mnd  · 技术社区  · 6 年前

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

    有没有一种方法可以告诉SpringBoot包含另一个文件或目录来搜索属性文件?

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

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

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

    1 回复  |  直到 6 年前
        1
  •  0
  •   mnd    6 年前

    好吧,所以我能在 this answer 特别是“原始答案”下的部分。

    结果证明需要一个由两部分组成的解决方案。

    1. SpringBootMaven插件需要设置一些配置。通过设置 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 参数。

    有关 为什么? ,继续阅读。

    根据弹簧文件 Launching Executable Jars “,有三个启动程序用于加载应用程序的文件。默认情况下 JAR发射器 它限制了可以检索资源的位置。这个 属性启动程序 另一方面,我会去看 BOOT-INF/lib/ 但也在 loader.path ,您可以提供其他文件夹。