Я предполагаю, что ваши файлы свойств состоят из пар 95% имя = значение , которые идентичны во всех средах развертывания и 5% пар имя = значение это изменение из одной среды развертывания в другую.
Если это предположение верно, то вы можете попробовать что-то вроде следующего псевдокода.
void generateRuntimeConfigFiles(int deploymentMode)
{
String[] searchAndReplacePairs;
if (deploymentMode == Constants.PRODUCTION) {
searchAndReplacePairs = ...
} else if (deploymentMode == Constants.STAGING) {
searchAndReplacePairs = ...
} else { // Constants.DEVELOPMENT
searchAndReplacePairs = ...
}
String[] filePairs = new String[] {
"log4j-template.properties", "log4j.properties",
"jdbc-template.properties", "jdbc.properties",
"foo-template.xml", "foo.xml",
...
};
for (int i = 0; i < filePairs.length; i += 2) {
String inFile = filePairs[i + 0];
String ouFile = filePairs[i + 1];
searchAndReplaceInFile(inFile, outFile,
searchAndReplacePairs);
}
}
Ваше приложение вызывает generateRuntimeConfigFiles()
до инициализации чего-либо еще, что может зависеть от свойств / файлов XML.
Теперь единственная проблема, с которой вам приходится сталкиваться, это как сохранить и получить различные настройки для searchAndReplacePairs
. Возможно, вы могли бы получить их из файлов с именами, такими как production.properties
, staging.properties
и development.properties
.
Если вышеуказанный подход вам нравится, напишите мне исходный код searchAndReplaceInFile()
, чтобы избавить вас от необходимости заново изобретать колесо. Вы можете найти мой адрес электронной почты в поле «Информация» в моем профиле Stackoverflow.