Я пытаюсь запустить org.hibernate.tool.ant.EnversHibernateToolTask, как указано в довольно кратком руководстве по Envers (2-я строка таблицы, Документация содержит ссылку на PDF). Вот моя муравьиная задача, настроенная таким образом, что она успешно находит org.hibernate.tool.ant.EnversHibernateToolTask и org.hibernate.tool.ant.HibernateToolTask; теперь он не может найти org.apache.tools.ant.Task, и у меня возникает ощущение, что я делаю что-то не так.
<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>
Раньше я никогда не выполнял пользовательскую задачу по муравью, поэтому я, вероятно, упускаю что-то действительно простое. Какие-либо предложения? Я не знаю, что указать для пути к классам в задаче hibernatetool, для которой я не могу найти никакой документации за пределами элементарного javadoc .
edit: Хорошо, некоторые конкретные вопросы, чтобы попытаться добраться до этого по частям ...
- в какой банке должен быть
org.apache.tools.ant.Task
, и почему муравей не может ее найти?
- где находятся документы о том, как использовать HibernateToolTask? (Я предполагаю, что EnversHibernateToolTask должен работать так же)
обновление (2009-06-18): ОК, наконец-то я набрался смелости, чтобы попытаться добиться определенного прогресса, и добился определенных успехов. Я могу заставить его почти работать, выполнив две вещи:
- запустить
ant schemaexport
из командной строки, а не из Eclipse, чтобы запустить мою цель schemaexport
. (ant в Eclipse не может найти org / apache / tools / ant / Task, и я не знаю, как установить путь к классу Ant в eclipse (в отличие от пути к классам в элементе taskdef; каким-то образом я должен сказать ant использовать classpath, чтобы найти свой собственный проклятый класс, когда он запускает пользовательскую задачу. Это безумие .... grrr ...)
обеспечение того, что мой classpath содержит все jar-файлы, которые я просто принимаю как должное, вставив в каталог /lib/ext
моей JRE:
- Envers-1.2.0.ga-зимуют-3.3.jar
- hibernate3.jar
- зимуют-tools.jar
- SLF4J-log4j12-1.5.6.jar
- slf4j-api-1.5.6.jar
- log4j-1.2.15.jar
Теперь у меня новая проблема:
СТРОИТЬ НЕУДАЧИ
C: \ Дека \ проектируемый \ Java \ тест-базы данных \ build.xml: 61:
Проблемы в создании конфигурации на
для JPA. Вы не забыли добавить
спящий EntityManager
путь к классу?
[[[[[закричать]]]]]
обновление Похоже, мне тоже нужно
- зимуют-entitymanager.jar
- зимуют-annotations.jar
и я ВСЕ ЕЩЕ получаю ошибки загрузчика классов:
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)
Как мне запустить это без необходимости использовать сервер J2EE?!?!?!?!?!? Какие другие файлы JAR мне нужны? Я действительно смущен и расстроен.
обновление (2009-06-23): я наконец-то получил успешную сборку. Похоже, вам нужно:
* 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
и обязательно использовать
<annotationconfiguration configurationfile="${some_path}/hibernate.cfg.xml"/>
вместо элемента <jpaconfiguration>
, включенного в пример задачи муравья. Это все еще не работает должным образом, хотя, я не включаю таблицы envers. (