Puis-je faire quelque chose comme working-dir="file:${user.home}/some-directory"
dans mon fichier .properties? J'utilise ResourceBundle pour charger la configuration à partir d'un fichier .properties et j'hériterais une clé de propriété système telle que user.home
pour ma propriété working-dir
. Ce serait bien de pouvoir le faire car je peux avoir différentes versions du fichier .properties dans le répertoire de ressources du paquet source et du paquet de test respectivement. Je veux définir différentes valeurs pour working-dir
pour mon environnement de production et de test.Hériter de la propriété user.home dans mon fichier .properties personnalisé
1
A
Répondre
1
Vous ne pouvez pas faire cela directement, mais vous pouvez analyser vos propriétés dans votre code et étendre par programmation les variables, par ex.
- Recherchez le modèle
${varname}
dans votre propriété - Obtenez la valeur de
varname
des propriétés du système - Remplacer
${varname}
avec la valeur de la propriété du systèmevarname
Voici une mise en œuvre simple ci-dessus:
String property = "file:${user.home}/some-directory";
StringBuffer sb = new StringBuffer();
Pattern pattern = Pattern.compile("\\$\\{(.+)\\}");
Matcher matcher = pattern.matcher(property);
while (matcher.find())
{
String key = matcher.group(1);
String val = System.getProperty(key);
if (val != null)
{
matcher.appendReplacement(sb, Matcher.quoteReplacement(val));
}
}
matcher.appendTail(sb);
System.out.println(sb.toString());
0
Juste essayé Apache commons configurationvariable interpolation et cela fonctionne parfaitement.
Cela fonctionnerait. Merci. Dommage que ce ne soit pas supporté. – walters