java - ejemplo - hibernate envers maven
tropiezos en abundancia al intentar ejecutar org.hibernate.tool.ant.EnversHibernateToolTask (2)
Estoy tratando de ejecutar org.hibernate.tool.ant.EnversHibernateToolTask como se sugiere en la guía bastante breve de Envers (segunda línea de la tabla, la documentación tiene un enlace a un PDF). Aquí está mi tarea de hormiga ajustada para que encuentre con éxito org.hibernate.tool.ant.EnversHibernateToolTask y org.hibernate.tool.ant.HibernateToolTask; ahora no puede encontrar org.apache.tools.ant.Task y tengo la sensación de que estoy haciendo algo mal.
<target name="schemaexport" depends="init"
description="Exports a generated schema to DB and file">
<taskdef name="hibernatetool"
classname="org.hibernate.tool.ant.EnversHibernateToolTask"
classpath=".;C:/appl/Java/jre6u13/lib/ext/envers-1.2.0.ga-hibernate-3.3.jar;C:/appl/Java/jre6u13/lib/ext/hibernate-tools.jar" />
<!--classpathref="${schema.classpath}"/>-->
<hibernatetool destdir=".">
<classpath>
<fileset refid="lib.hibernate" />
<path location="${build.dir}" />
</classpath>
<jpaconfiguration persistenceunit="ConsolePU" />
<hbm2ddl
drop="false"
create="true"
export="false"
outputfilename="versioning-ddl.sql"
delimiter=";"
format="true"/>
</hibernatetool>
</target>
Nunca he hecho una tarea de hormiga personalizada antes, así que probablemente me esté perdiendo algo realmente simple. ¿Alguna sugerencia? No sé qué poner para el classpath en la tarea hibernatetool, que no puedo encontrar ninguna documentación más allá de rudimentario javadoc .
editar: ok, algunas Q''s específicas para tratar de llegar a esta pieza ...
- ¿qué jar es
org.apache.tools.ant.Task
supone que debe estar, y por qué no puede encontrarlo? - ¿Dónde están los documentos sobre cómo usar HibernateToolTask? (Supongo que se supone que EnversHibernateToolTask funciona igual)
actualización (18-06-2009): OK, finalmente hice mi coraje para tratar de hacer algo de progreso en esto e hice algunos progresos. Puedo hacer que funcione casi al hacer dos cosas:
- Ejecute
ant schemaexport
desde la línea de comandos, en lugar de hacerlo desde Eclipse, para ejecutar mi objetivoschemaexport
. (Ant en Eclipse parece no encontrar org / apache / tools / ant / Task y no sé cómo configurar el classpath Ant en eclipse (distinto del classpath en el elemento taskdef; de alguna manera tengo que decirle a hormiga utiliza un classpath para encontrar su propia maldita clase cuando ejecuta una tarea personalizada. Esto es una locura ... grrr ...) asegurándome de que mi classpath contenga todas las jarras que acabo de dar por sentado al pegar en el directorio de mi JRE
/lib/ext
:- envers-1.2.0.ga-hibernate-3.3.jar
- hibernate3.jar
- hibernate-tools.jar
- slf4j-log4j12-1.5.6.jar
- slf4j-api-1.5.6.jar
- log4j-1.2.15.jar
Ahora tengo un nuevo problema:
BUILD FAILED C: / deka / proj / java / test-database / build.xml: 61: Problemas para crear una configuración para JPA. ¿Te acordás de agregar hibernate EntityManager jar a la ruta de clase?
[[[[[gritar]]]]]
actualización Parece que también necesitaba
- hibernate-entitymanager.jar
- hibernate-annotations.jar
y TODAVÍA recibo errores del cargador de clases:
BUILD FAILED
java.lang.NoClassDefFoundError: javax/persistence/PersistenceException
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)
at java.lang.Class.getConstructor0(Class.java:2699)
at java.lang.Class.newInstance0(Class.java:326)
at java.lang.Class.newInstance(Class.java:308)
at org.hibernate.tool.ant.JPAConfigurationTask.createConfiguration(JPACo
nfigurationTask.java:33)
at org.hibernate.tool.ant.ConfigurationTask.getConfiguration(Configurati
onTask.java:54)
¿Cómo puedo ejecutar esto sin tener que usar un servidor J2EE?!?!?!?!?!? ¿Qué otros archivos JAR necesito? Estoy realmente confundido y frustrado.
actualización (23/06/2009): finalmente obtuve una compilación exitosa. Parece que necesitas:
* envers-1.2.0.ga-hibernate-3.3.jar
* hibernate3.jar
* hibernate-tools.jar
* slf4j-log4j12-1.5.6.jar
* slf4j-api-1.5.6.jar
* log4j-1.2.15.jar
* dom4j-1.6.1.jar
* hibernate-commons-annotations.ja
* a JAR containing JTA classes (Sun doesn''t have a JAR file but you can download the [class files][3] yourself and make a JAR file out of it)
* a JAR containing JPA classes (I used toplink-essentials.jar from the glassfish project, per [this SO question][4])
* commons-logging-1.1.1.jar
* freemarker.jar
y se aseguró de usar
<annotationconfiguration configurationfile="${some_path}/hibernate.cfg.xml"/>
en lugar del elemento <jpaconfiguration>
incluido en la tarea ant de muestra. Sin embargo, todavía no funciona correctamente, no incluyo las tablas de Envers. :(
EnversHibernateToolTask extiende HibernateToolTask. Todo lo que necesitaba hacer era lo siguiente:
<taskdef name="hibernatetool"
classname="org.hibernate.tool.ant.EnversHibernateToolTask"
classpath="envers-1.2.0.ga-hibernate-3.3.jar" />
De lo contrario, sería útil ver el resultado del archivo ant que ha pegado.
puede necesitar ejb3-persistence-1.0.2.GA.jar