【发布时间】:2016-05-02 20:13:38
【问题描述】:
在我们的 Mule 项目中,我们有一个从多个 Mule 项目中引用的通用属性文件。为此,我们将文件放在 Mule 安装目录中,并在每个项目的流程中引用它:
<spring:beans>
<context:property-placeholder
location="file:///${mule.home}/conf/common.properties" />
</spring:beans>
这适用于在 Mule 和 Anypoint Studio 中运行项目,因为在这两种情况下都定义了 mule.home。它还适用于从 Anypoint Studio 运行项目中定义的 MUnit 测试套件。
但是,当从 Maven 运行测试时,mule.home 未定义并且测试失败。我尝试将mule.home 的定义添加到 Maven settings.xml 文件中,但这不起作用。
关于如何从 Maven 运行测试并在属性流中保留 mule.home 引用的任何建议?或者,当从测试套件调用流时,是否有办法在属性流中进行替代配置?
另外,我们应该如何引用来自多个 Mule 项目的公共属性文件?
版本: 骡运行时:3.6.2
单位:1.1.0
Maven 3.3.1
【问题讨论】:
-
仅供参考
${mule.home}/conf在类路径上,因此您无需使用绝对文件引用来访问它。您应该可以使用classpath:common.properties加载它 -
没有这样的运气
java.io.FileNotFoundException: class path resource [common.properties] cannot be opened because it does not exist -
这个公用文件在项目之外吗?这就是为什么不在类路径中。我认为您唯一的选择是通过 -Dmule.home=yourpath 之类的 jvm 参数强制它,它应该可以工作。
-
或者我试图获得 OP:将文件作为类路径资源加载并通过 Maven 正确提供,例如通过共享 JAR。应该避免使用这样的绝对路径加载文件。
-
尽管我回答了这个问题,但我同意大卫的观点,避免这种做法,在您的应用程序中复制文件并没有什么不好的,并且通用并不能真正帮助您节省时间,只是看看你发布了多少问题:-)。