我可以working-dir="file:${user.home}/some-directory"
在我的 .properties 文件中执行类似的操作吗?我正在使用 ResourceBundle 从 .properties 文件加载配置,并且我将继承系统属性键,例如user.home
我的working-dir
属性。能够做到这一点会很好,因为我可以分别在源包和测试包的资源目录中拥有不同版本的 .properties。我想working-dir
为我的生产和测试环境定义不同的值。
问问题
1638 次
2 回答
1
您不能直接这样做,但是您可以在代码中解析属性并以编程方式扩展变量,例如
${varname}
在您的财产中搜索模式varname
从系统属性中获取值- 替换
${varname}
为系统属性的值varname
这是上面的一个简单实现:
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());
于 2010-10-20T08:25:56.530 回答
0
刚刚尝试了Apache commons configuration的变量插值,它工作得很好。
于 2010-10-20T10:43:45.240 回答