【问题标题】:Mule MUnit test with Maven, mule.home property is not defined使用 Maven 进行 Mule MUnit 测试,未定义 mule.home 属性
【发布时间】: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。应该避免使用这样的绝对路径加载文件。
  • 尽管我回答了这个问题,但我同意大卫的观点,避免这种做法,在您的应用程序中复制文件并没有什么不好的,并且通用并不能真正帮助您节省时间,只是看看你发布了多少问题:-)。

标签: maven mule munit


【解决方案1】:

试试这个:

mvn -Dmule.home=yourpath test

这应该可以解决问题。 希望这会有所帮助。

【讨论】:

    【解决方案2】:

    或者,您可以在父抽象测试类中以编程方式设置 mule.home:

    @BeforeClass
    public static void setUp() {
        System.setProperty("mule.home", "whatever");
    }
    

    【讨论】:

      猜你喜欢
      • 2017-12-18
      • 2016-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-30
      • 1970-01-01
      • 2016-10-12
      • 1970-01-01
      相关资源
      最近更新 更多