在哪里使用maven将persistence.xml放在库jar中?

scr*_*avy 37 java jpa jar persistence.xml maven

在工作中,我们有一个实体库,由几个客户端用于库(几个servlet,一个桌面应用程序等).实体库由JPA-Annotated类组成,最突出的是persistence.xml.

所有项目都使用maven配置.

应该在哪里放置persistence.xml文件?它需要位于该实体库的jar文件中,我不知道如何使用maven配置它.

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

'''UPDATE'''要清楚这一点,有一个Maven-Project A包含persistence.xml,另一个(B)依赖于该Project.我把persistence.xml放在A中的src/main/resources/META-INF/persistence.xml中,当试图在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
Run Code Online (Sandbox Code Playgroud)

我怀疑找不到persistence.xml,但它存在于目标jar中.

mab*_*aba 77

正如@Dave上面提到src/main/resources的那样.说到persistence.xml它应该放在META-INF文件夹中.总结如下:src/main/resources/META-INF/persistence.xml.

  • 为我工作完美.必须创建一个文件夹META-INF并将persistence.xml放入其中. (3认同)

J S*_*ick 12

放置在WEB-INF/classes/META-INF时,我只有persistence.xml才能在我的WAR中工作,就像文档建议的那样:

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

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

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

src\main\resources

我的Maven项目在以下位置有persistence.xml:

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

运行后Maven clean install,构建一个WAR:

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

当我将此WAR放入Tomcat 7的webapps文件夹时,它已正确部署并且JPA正常工作.


Dav*_*ton 5

XML配置文件几乎总是属于src/main/resources包层次结构(就像Java源文件一样).这些文件将被复制到同一层次结构中的工件中.