2010-10-20 12 views
1

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é

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ème varname

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

Cela fonctionnerait. Merci. Dommage que ce ne soit pas supporté. – walters