Question

Puis-je faire quelque chose comme working-dir="file:${user.home}/some-directory" dans mon fichier .properties? J'utilise ResourceBundle à la configuration de charge à partir d'un fichier .properties et je hériter d'une clé de propriété système tel que user.home pour ma propriété working-dir. Il serait agréable de pouvoir faire ce que je peux avoir différentes versions des .properties dans le répertoire des ressources du paquet source et package de test respectivement. Je veux définir des valeurs différentes pour working-dir pour ma production et de l'environnement de test.

Était-ce utile?

La solution

Vous ne pouvez pas faire directement, mais vous pouvez analyser vos propriétés dans votre code et les variables programatically développer, par exemple.

  • Recherchez le modèle ${varname} dans votre propriété
  • Obtenir la valeur de varname des propriétés du système
  • Remplacez ${varname} avec la valeur de la propriété du système varname

Voici une implémentation simple de ce qui précède:

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());

Autres conseils

Juste essayé configuration Apache commons 's l'interpolation de variables et il fonctionne parfaitement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top