JPA persistence.xml类路径是否位于?

时间:2010-04-14 14:59:36

标签: java unit-testing maven-2 jpa classpath

这就是我想要做的。我在Web应用程序中使用JPA持久性,但我有一组单元测试,我想在容器外运行。

我的主要persistence.xml位于我的主应用程序的META_INF文件夹中,它在容器(Glassfish)中运行良好。

我在persistence.xml目录的META-INF文件夹中放了第二个test-classes。这包含一个单独的持久性单元,我只想用于测试。在eclipse中,我将此文件夹放在类路径中比默认文件夹更高,它似乎有用。

现在,当我直接从命令行运行maven构建并尝试运行单元测试时,忽略persistence.xml覆盖。我可以在maven生成的META-INF目录的test-classes文件夹中看到覆盖,我希望maven测试使用这个文件,但事实并非如此。我的Spring测试配置覆盖,以类似的方式实现了工作。

我很担心persistence.xml是否位于类路径中。如果是,我的覆盖应该像弹簧覆盖一样工作,因为maven surefire插件explains“[测试类目录]将包含在测试类路径的开头”。

我是否错误地预测了persistence.xml文件的位置?

我可以(并且已经)在生产persistence.xml文件中创建第二个持久性单元,但是将测试配置放入此生产文件会感觉很脏。关于如何实现我的目标的任何其他想法都是受欢迎的。

2 个答案:

答案 0 :(得分:4)

目前还不清楚您放置“第二个”persistence.xml(测试版)的位置,但您应该将其放在src/test/resources/META-INF中。测试资源会自动添加到Maven为您的单元测试设置的类路径中,并优先于src/main/resources中放置的资源。

答案 1 :(得分:3)

persistence.xml从类路径加载;在过去,我完全按照你的描述完成了。

这很可能是maven的一个问题。您可以通过使用-X选项运行它来调试maven类路径。