Мы создали структуру папок для свойств, специфичных для среды. В этой папке мы создали папки для каждой конкретной среды, предназначенной для развертывания, включая локальную разработку. Выглядело это так:
Project
\
-Properties
\
-Local (your PC)
-Dev (shared dev server)
-Test (pre-production)
-Prod (Production)
В каждую папку мы помещаем параллельные копии файлов свойств / конфигурации и помещаем различные конфигурации только в файл в соответствующей папке. Секрет заключался в том, чтобы контролировать путь к классам среды развертывания. Мы определили запись пути к классу PROPERTIES на каждом сервере. В Prod для него будет задано значение «$ ProjectDir / Properties / Prod», а в «Тесте» для этой же переменной будет установлено значение «$ ProjectDir / Properties / Test».
Таким образом, мы могли бы иметь предварительно настроенные строки соединения с базой данных для базы данных dev / test / prod и не должны извлекать / в файле свойств каждый раз, когда мы хотели построить для другой среды.
Это также означало, что мы можем развернуть точно такой же файл .war / .ear в Test и Prod без перекомпоновки. Любые свойства, которые не были объявлены в файле свойств, мы обрабатывали аналогичным образом, используя одно и то же имя JNDI в каждой среде, но используя значения, характерные для этой среды.