¿alguien puede decirme cómo forzar maven a preceder a la asignación de archivos .hbm.xml en el hibernate generado automáticamente archivo .cfg.xml con la ruta del paquete?Cómo configurar hibernate-tools con maven para generar hibernate.cfg.xml, * .hbm.xml, POJOs y DAOs
Mi idea general es, me gustaría usar hibernate-tools a través de maven para generar la capa de persistencia para mi aplicación. Entonces, necesito el hibernate.cfg.xml, luego todos mis_nombre_tabla.hbm.xml y al final los POJO generados. Sin embargo, el objetivo hbm2java
no funcionará como puse los archivos * .hbm.xml en la carpeta src/main/resources/package/path/
pero hbm2cfgxml
especifica los archivos de asignación única por nombre de la tabla, es decir:
<mapping resource="MyTableName.hbm.xml" />
Entonces la gran pregunta es: ¿cómo puede configuro hbm2cfgxml
modo que hibernate.cfg.xml se parece a continuación:
<mapping resource="package/path/MyTableName.hbm.xml" />
Mi pom.xml tiene este aspecto en la actualidad
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>hibernate3-maven-plugin</artifactId>
<version>2.2</version>
<executions>
<execution>
<id>hbm2cfgxml</id>
<phase>generate-sources</phase>
<goals>
<goal>hbm2cfgxml</goal>
</goals>
<inherited>false</inherited>
<configuration>
<components>
<component>
<name>hbm2cfgxml</name>
<implemetation>jdbcconfiguration</implementation>
<outputDirectory>src/main/resources/</outputDirectory>
</component>
</components>
<componentProperties>
<packagename>package.path</packageName>
<configurationFile>src/main/resources/hibernate.cfg.xml</configurationFile>
</componentProperties>
</configuration>
</execution>
</executions>
</plugin>
Y luego la segunda pregunta: ¿hay alguna manera de decirle a maven que copie los recursos a la carpeta de destino antes de ejecutar hbm2java
? En este momento estoy usando
mvn clean resources:resources generate-sources
para eso, pero debe haber una manera mejor.
Gracias por cualquier ayuda.
Actualización:
@Pascal: Gracias por su ayuda. El camino a las asignaciones funciona bien ahora, sin embargo, no sé lo que estaba mal antes. Tal vez haya algún problema con la escritura en hibernate.cfg.xml mientras lee la configuración de la base de datos desde allí (aunque el archivo se actualiza).
He eliminado el archivo hibernate.cfg.xml, lo he sustituido por database.properties y ejecuto los objetivos hbm2cfgxml
y hbm2hbmxml
. Tampoco utilizo el outputDirectory
ni el configurationfile
en esos objetivos.
Como resultado, los archivos hibernate.cfg.xml
y todos *.hbm.xml
se están generando en mi carpeta target/hibernate3/generated-mappings /, que es el valor predeterminado. A continuación, he actualizado el objetivo hbm2java
con lo siguiente:
<componentProperties>
<packagename>package.name</packagename>
<configurationfile>target/hibernate3/generated-mappings/hibernate.cfg.xml</configurationfile>
</componentProperties>
Pero entonces me sale el siguiente:
[INFO] --- hibernate3-maven-plugin:2.2:hbm2java (hbm2java) @ project.persistence ---
[INFO] using configuration task.
[INFO] Configuration XML file loaded: file:/C:/Documents%20and%20Settings/mmm/workspace/project.persistence/target/hibernate3/generated-mappings/hibernate.cfg.xml
12:15:17,484 INFO org.hibernate.cfg.Configuration - configuring from url: file:/C:/Documents%20and%20Settings/mmm/workspace/project.persistence/target/hibernate3/generated-mappings/hibernate.cfg.xml
12:15:19,046 INFO org.hibernate.cfg.Configuration - Reading mappings from resource : package.name/Messages.hbm.xml
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.codehaus.mojo:hibernate3-maven-plugin:2.2:hbm2java (hbm2java) on project project.persistence: Execution hbm2java of goal org.codehaus.mojo:hibernate3-maven-plugin:2.2:hbm2java failed: resource: package/name/Messages.hbm.xml not found
¿Cómo puedo lidiar con eso? Por supuesto que podría añadir:
<outputDirectory>src/main/resources/package/name</outputDirectory>
a la meta hbm2hbmxml
, pero creo que esto no es el mejor enfoque, o es? ¿Hay alguna manera de mantener todos el código generado y los recursos fuera de la carpeta src/
?
Supongo que el objetivo de este enfoque no es generar fuentes en mi carpeta src/main/java o/resources, sino mantener el código generado en la carpeta de destino.Como generalmente estoy de acuerdo con este punto de vista, me gustaría continuar con eso, finalmente ejecutando hbm2dao
y empaquetando el proyecto para ser utilizado como un componente de capa de persistencia generado desde la capa de negocios. ¿Es esto también lo que querías decir?
Gracias por sus comentarios Pascal. Moví la ejecución a generar recursos, corrigí el error tipográfico. 1. ¿Cómo debo configurar el usuario y la contraseña para hibernate-tools si no lo hace hibernate.cfg.xml (o hibernate.properties)? La idea aquí es que hibernate.cfg.xml se está leyendo y actualizando si se han realizado cambios en el modelo de datos. ¿Hay algún enfoque más óptimo? Todas las demás opciones me obligan a mantener la misma configuración en 2 archivos separados con una sintaxis diferente. En relación con mi segunda pregunta, también gracias por su respuesta. La pregunta principal con respecto a la ruta/a/mapeos sigue abierta. – mmm
@mmm: He actualizado mi respuesta, pruébelo. –
Gracias por su ayuda: funcionó bien. Actualicé mi pregunta – mmm