Where to put persistence.xml in library jar using maven?
As @Dave mentions above src/main/resources
is the place. When it comes to persistence.xml
it should be placed in the META-INF
folder. So to conclude: src/main/resources/META-INF/persistence.xml
.
In the maven pom.xml file you have to add the resource directory, so you don't have to add it to the build-path in eclipse manually.
<project>
...
<build>
...
<resources>
<resource>
<directory>src/resources</directory>
</resource>
</resources>
...
</build>
...
</project>
see: http://maven.apache.org/plugins/maven-resources-plugin/examples/resource-directory.html
XML configuration files almost always belong in src/main/resources
, in a package hierarchy (just like Java source files). Those files will be copied into the artifact in the same hierarchy.
I have only gotten persistence.xml to work in my WAR when placed at WEB-INF/classes/META-INF, just as the documentation advises:
http://docs.oracle.com/cd/E19159-01/819-3669/bnbrj/index.html states the following:
If you package the persistence unit as a set of classes in a WAR file, persistence.xml should be located in the WAR file’s WEB-INF/classes/META-INF directory.
In my Eclipse project props, I added this to the build path:
src\main\resources
My Maven project has persistence.xml at the following location:
src\main\resources\META-INF\persistence.xml
After running Maven clean install
, a WAR is built with:
WEB-INF\classes\META-INF\persistence.xml
When I drop this WAR into Tomcat 7's webapps folder, it is deployed properly and JPA works.