我可以在.properties文件中执行working-dir="file:${user.home}/some-directory"
之类的操作吗?我正在使用ResourceBundle从.properties文件加载配置,我将为user.home
属性继承系统属性键,例如working-dir
。能够这样做会很高兴,因为我可以分别在源包和测试包的资源目录中有不同版本的.properties。我想为我的生产和测试环境定义working-dir
的不同值。
答案 0 :(得分: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());
答案 1 :(得分:0)