Использование внешнего стороннего файла свойств с Spring Boot Fat Jar
У меня есть приложение Spring Boot, которое будет развернуто в виде толстой банки. Он интегрируется с толпой Atlassian для аутентификации. Это требует crowd.properties
файл, который будет доступен на пути к классам. Я бы предпочел не связывать файл свойств (который включает пароль) с jar.
Есть ли способ указать Spring Boot включить другой файл или каталог, где искать файлы свойств?
Когда в прошлом это делалось с автономным / внешним Tomcat, я бы использовал shared.loader
недвижимость в catalina.properties
указать каталог, в котором будут доступны дополнительные файлы свойств.
Я попытался включить файл в корневой каталог банки, а также /config
местоположение, но безрезультатно. Atlassian также имеет страницу, которая указывает на использование -Dcrowd.properties=...
Параметр командной строки, чтобы установить это, но также безрезультатно.
Примечание: это не ссылка application.properties
во внешних местах.
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>
- С использованием
-Dloader.path=/folder/with/property/file/
Параметр командной строки, чтобы указать местоположение файла свойств. Примечание: это должно прийти после-jar
параметр.
Для получения дополнительной информации о том, почему, читайте дальше.
Основываясь на документации Spring для " Запуск исполняемых Jar-файлов", есть три средства запуска для загрузки файлов для приложения. По умолчанию JarLauncher
используется, что ограничивает места, где вы можете получить ресурсы. PropertiesLauncher
с другой стороны, будет смотреть в BOOT-INF/lib/
но и в loader.path
, которые вы можете предоставить дополнительные папки.