Donde poner persistencia.xml en la biblioteca jar usando maven?


En el trabajo tenemos una biblioteca de entidades que es utilizada por varios clientes para la biblioteca (varios servlets, una aplicación de escritorio, etc.). La biblioteca de entidades consiste en clases anotadas por JPA y, sobre todo, una persistencia.XML.

Todos los proyectos se configuran usando maven.

Donde debe una persistencia.archivo xml ser puesto? Necesita estar ubicado dentro del archivo jar de esa biblioteca de entidades y no estoy seguro de cómo configurarlo usando maven.

(Solo estamos dividiendo un proyecto en varios proyectos más pequeños)

"'UPDATE"' Para aclarar esto, hay un Maven-Project A que contiene la persistencia.xml y otro (B) que depende de ese Proyecto. Tengo lugares de persistencia.xml en src / main / resources / META-INF / persistence.xml en A, al intentar usar un EntityManager dentro de A, no hay problema, insidie B: nada funciona.

EclipseLink da la siguiente advertencia:

[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

Sospecho la persistencia.xml no se encuentra, pero está presente en el tarro objetivo.

Author: scravy, 2012-06-03

4 answers

Como @Dave menciona arriba src/main/resources es el lugar. Cuando se trata de persistence.xml debe colocarse en la carpeta META-INF. Para concluir: src/main/resources/META-INF/persistence.xml.

 75
Author: maba,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-06-04 08:06:39

Solo he conseguido persistencia.xml para trabajar en mi GUERRA cuando se coloca en WEB-INF / classes / META-INF, tal como la documentación aconseja:

Http://docs.oracle.com/cd/E19159-01/819-3669/bnbrj/index.html establece lo siguiente:

Si empaqueta la unidad de persistencia como un conjunto de clases en un archivo WAR, persistencia.xml debe estar ubicado en el directorio WEB-INF/classes/META-INF del archivo WAR.

En mis accesorios de proyecto Eclipse, agregué esto a la ruta de construcción:

src\main\resources

Mi proyecto Maven tiene persistencia.xml en la siguiente ubicación:

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

Después de correr Maven clean install, se construye una GUERRA con:

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

Cuando dejo caer esta GUERRA en la carpeta webapps de Tomcat 7, se implementa correctamente y JPA funciona.

 11
Author: J Slick,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-25 14:00:22

Los archivos de configuración XML casi siempre pertenecen a src/main/resources, en una jerarquía de paquetes (al igual que los archivos fuente Java). Esos archivos se copiarán en el artefacto en la misma jerarquía.

 6
Author: Dave Newton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-06-03 14:26:09

En el maven pom.archivo xml tiene que agregar el directorio de recursos, por lo que no tiene que agregarlo a la ruta de compilación en eclipse manualmente.

<project>
  ...
  <build>
    ...
    <resources>
      <resource>
        <directory>src/resources</directory>
      </resource>
    </resources>
    ...
  </build>
  ...
</project>

Véase: http://maven.apache.org/plugins/maven-resources-plugin/examples/resource-directory.html

 2
Author: eeezyy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-12-18 00:09:42