在 CloudHub 设置中有效的 属性 在属性文件中无效

Property that works in CloudHub settings is not working in properties files

我的应用程序在名为 keys 的子目录中的 src/main/resources 目录中使用 public 加密密钥。为了在本地访问这个,我只需要将路径设置为src/main/resources/keys/<mykey>.gpg

因为Cloudhub上的结构不同,所以设置上面的路径是行不通的,我不得不将它设置为${app.home}/keys/<mykey>.gpg。 这在我直接在 Cloudhub 中设置 属性 时有效,但是当我在我的属性文件中设置它时,我收到错误消息...

Could not resolve placeholder 'app.home' in string value 
"${app.home}/classes/keys/<mykey>.gpg"

我在本地 运行 时也无法解析 属性。我的猜测是首先解析 application-${ENV}.properties 中的属性,然后设置 ${app.home} 属性,最后解析 Cloudhub 属性。

我的问题是,我该怎么做才能确保 ${app.home} 从属性文件中得到正确解析,或者是否有另一种方法可以在不使用它的情况下实现相同的目的?理想情况下,我们不希望每次在 Cloudhub 中重新部署应用程序时都必须设置 public 密钥位置。

谢谢!

编辑: 为了更清楚,这里是我在 application-DEV-properties 中设置 属性 的地方:cibc.public.key.location=${app.home}/classes/keys/<mykey>.gpg

我认为在某些情况下这是 Mule 3 中的一个问题。您可以尝试在 属性 占位符上设置 ignore-unresolvable="true" 吗?它应该告诉 spring 移动到下一个查找位置。

<context:property-placeholder location="your.properties" ignore-unresolvable="true"/>

更新 也尝试将属性分成两个条目:

cibc.public.key.location=classes/keys/<mykey>.gpg

然后在您的 Mule 配置中:

identityFile="${app.home}/${cibc.public.key.location}"