Использование внешнего стороннего файла свойств с Spring Boot Fat Jar

У меня есть приложение Spring Boot, которое будет развернуто в виде толстой банки. Он интегрируется с толпой Atlassian для аутентификации. Это требует crowd.properties файл, который будет доступен на пути к классам. Я бы предпочел не связывать файл свойств (который включает пароль) с jar.

Есть ли способ указать Spring Boot включить другой файл или каталог, где искать файлы свойств?

Когда в прошлом это делалось с автономным / внешним Tomcat, я бы использовал shared.loader недвижимость в catalina.properties указать каталог, в котором будут доступны дополнительные файлы свойств.

Я попытался включить файл в корневой каталог банки, а также /config местоположение, но безрезультатно. Atlassian также имеет страницу, которая указывает на использование -Dcrowd.properties=... Параметр командной строки, чтобы установить это, но также безрезультатно.

Примечание: это не ссылка application.properties во внешних местах.

1 ответ

Решение

Итак, я смог понять это с помощью этого ответа, в частности, в разделе "Оригинальный ответ".

Оказывается, что решение состояло из двух частей.

  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 для " Запуск исполняемых Jar-файлов", есть три средства запуска для загрузки файлов для приложения. По умолчанию JarLauncher используется, что ограничивает места, где вы можете получить ресурсы. PropertiesLauncher с другой стороны, будет смотреть в BOOT-INF/lib/ но и в loader.path, которые вы можете предоставить дополнительные папки.

Другие вопросы по тегам