0

我想使用 ANT 从 Hibernate/JPA 注释类生成 SQL DDL 脚本。

下面是我基于 Hibernate Dev Docs URL 编写的 ANT 脚本:http: //docs.jboss.org/hibernate/orm/4.1/devguide/en-US/html_single/

   <project name="yourmarketnet" default="all" basedir=".">
<target name="ddl_generation">
<!-- paths to required jars  -->
<path location="web/WEB-INF/lib/hibernate-annotations.jar" />
<path location="web/WEB-INF/lib/ejb3-persistence.jar" />
<path location="web/WEB-INF/lib/hibernate-entitymanager.jar" />
<path location="web/WEB-INF/lib/javaassist.jar" />
<path location="web/WEB-INF/lib/hibernate-tools.jar"/>
<taskdef name="hibernatetool" classname="org.hibernate.tool.ant.HibernateToolTask.jar">
     <classpath path="${build.dir}/web/WEB-INF/lib/hibernate-tools.jar"/> 
    </taskdef>
<!-- output destination -->
<hibernatetool destdir="${build.dir}">
    <!-- were the annotation beans files are located-->
<classpath>
<path location="${build.dir}/web/WEB-INF/classes/com/yourmarketnet/beans" />
</classpath>
<!-- list exporters here -->
<hbm2ddl
export="false"
update="false"
drop="true"
create="true"
outputfilename="myApps.ddl"
delimiter=";"
format="false"
haltonerror="true"/>
</hibernatetool>
</target>
</project>

我得到 ERROR taskdef class org.hibernate.tool.ant.HibernateToolTask​​ cannot be found using the classloader AntClassLoader[]

我还检查了 hibernate-tools.jar 是否真的在路径中,它是 (C:\Users\naim\Documents\NetBeansProjects\yourmarketnet\build\web\WEB-INF\lib\hibernate-tools.jar)

有人可以逐步告诉我如何修复/调试此问题,谢谢。

4

1 回答 1

1

错误信息清楚地告诉你 ant 找不到你的工具。当你声明

<taskdef name="hibernatetool" classname="org.hibernate.tool.ant.HibernateToolTask" >
   <classpath path="${build.dir}/web/WEB-INF/lib"/>
</taskdef>

它已经错了,因为工具类不在目录中,而是在 jar 中。其次,您的意图似乎是${build.dir}用作输出位置,那么为什么它会包含工具类?无论如何,你甚至没有定义这个目录。

所以如果你真的有你hibernate-tools.jarweb/WEB-INF/lib,你可能想要类似的东西

<taskdef name="hibernatetool" classname="org.hibernate.tool.ant.HibernateToolTask" >
   <classpath path="web/WEB-INF/lib/hibernate-tools.jar"/>
</taskdef>

请注意,它与您的项目目录相关。

于 2012-06-02T00:48:06.797 回答