使用maven将持久性.xml放在库罐中的什么位置?

2022-09-01 03:29:34

在工作中,我们有一个实体库,它被几个客户端用于库(几个servlet,一个桌面应用程序等)。实体库由 JPA 注释的类组成,最突出的是持久性.xml。

所有项目都使用 maven 进行配置。

持久性.xml文件应放在哪里?它需要位于该实体库的jar文件中,我不确定如何使用maven进行配置。

(我们只是将一个项目拆分为几个较小的项目)

'''UPDATE''为了明确这一点,有一个 Maven-Project A 包含持久性.xml另一个 (B) 依赖于该项目。我把持久性.xml放在src/main/resources/META-INF/persistence中.xml A中,当尝试在A中使用EntityManager时,没问题,insidie B:没有任何效果。

EclipseLink 给出以下警告:

[EL Warning]: The collection of metamodel types is empty. Model classes may not have been found during entity search for Java SE and some Java EE container managed persistence units.  Please verify that your entity classes are referenced in persistence.xml using either <class> elements or a global <exclude-unlisted-classes>false</exclude-unlisted-classes> element

我怀疑持久性.xml没有找到,但它存在于目标罐中。


答案 1

正如上面提到的@Dave就是这个地方。当涉及到它时,应该放在文件夹中。所以总结一下:.src/main/resourcespersistence.xmlMETA-INFsrc/main/resources/META-INF/persistence.xml


答案 2

我只有毅力.xml在WEB-INF/classes/META-INF上工作时才能在我的WAR中工作,正如文档所建议的那样:

http://docs.oracle.com/cd/E19159-01/819-3669/bnbrj/index.html 声明如下:

如果将持久性单元打包为 WAR 文件中的一组类,则持久性.xml应位于 WAR 文件的 WEB-INF/classes/META-INF 目录中。

在我的 Eclipse 项目 props 中,我将其添加到构建路径中:

src\main\resources

我的 Maven 项目在以下位置具有持久性.xml:

src\main\resources\META-INF\persistence.xml

运行后,WAR是用:Maven clean install

WEB-INF\classes\META-INF\persistence.xml

当我将此 WAR 放入 Tomcat 7 的 webapps 文件夹中时,它已正确部署,JPA 可以正常工作。


推荐