2012-06-03 36 views
0

我試圖使用ANT我的Hibernate的註解豆類生成SQL DDL,根據冬眠我已經創建瞭如下的Ant腳本工具文件:創建由Hibernate註解類DDL腳本中使用ANT

<?xml version="1.0" encoding="UTF-8"?> 
<project name="yourmarketnet" default="all" basedir="."> 
<property name="build.dir" value="C:/Users/naim/Documents/NetBeansProjects/yourmarketnet/build" /> 
<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"/> 
<path location="web/WEB-INF/lib/hibernate-entitymanager.jar" /> 
<path location="web/WEB-INF/lib/jboss-archive-browsing.jar" /> 
<path location="web/WEB-INF/lib/javaassist.jar" /> 

<taskdef name="hibernatetool" classname="org.hibernate.tool.ant.HibernateToolTask"> 
    </taskdef> 
    <classpath> 
    <!-- path of annotation beans --> 
<path location="${build.dir}/web/WEB-INF/classes/com/yourmarketnet/beans" /> 
</classpath> 
<!-- output destination --> 
<hibernatetool destdir="${build.dir}"> 
<!-- were the annotation beans files are located--> 
<!-- list exporters here --> 
<hbm2ddl 
export="false" 
update="false" 
drop="true" 
create="true" 
outputfilename="myApps.ddl" 
delimiter=";" 
format="false" 
haltonerror="true"/> 
</hibernatetool> 
</target> 
</project> 

然而即時得到以下錯誤:使用ClassLoader

的taskdef類org.hibernate.tool.ant.HibernateToolTask​​無法找到 AntClassLoader []

我檢查了我的/ lib &文件夾和類路徑hibernate-tools存在。

+0

[創建從使用ANT JPA /休眠註解類DDL腳本]的可能重複(http://stackoverflow.com/questions/10858844/creating-ddl-scripts-from-jpa-hibernate-annotation-classes -using-ant) –

+0

請不要發佈完全相同的問題兩次...... classpath不在taskdef XML標記內聲明。這將解釋爲什麼它不能拿起冬眠罐。 –

回答

0

在我的ant腳本中,我通常使用lib庫文件夾的絕對路徑定義一個名爲lib.dir的屬性,並使用該標記加載我的所有jar文件,因爲出於某種原因的相對路徑一直是個問題爲了我。也許值得爲你開一槍。

<property name="lib.dir" value="C:\path\to\project\WebContent\WEB-INF\lib"/> 
<property name="jdk.home" value="C:\path\to\jdk" /> 
<path id="project.classpath"> 
    <fileset dir="${lib.dir}"> 
     <include name="*.jar"/> 
    </fileset> 
    <pathelement location="${jdk.home}/jre/javaws/javaws.jar"/> 
    <pathelement location="${jdk.home}/jre/lib/charsets.jar"/> 
    <pathelement location="${jdk.home}/jre/lib/ext/dnsns.jar"/> 
    <pathelement location="${jdk.home}/jre/lib/ext/ldapsec.jar"/> 
    <pathelement location="${jdk.home}/jre/lib/ext/localedata.jar"/> 
    <pathelement location="${jdk.home}/jre/lib/ext/sunjce_provider.jar"/> 
    <pathelement location="${jdk.home}/jre/lib/im/indicim.jar"/> 
    <pathelement location="${jdk.home}/jre/lib/im/thaiim.jar"/> 
    <pathelement location="${jdk.home}/jre/lib/jce.jar"/> 
    <pathelement location="${jdk.home}/jre/lib/jsse.jar"/> 
    <pathelement location="${jdk.home}/jre/lib/plugin.jar"/> 
    <pathelement location="${jdk.home}/jre/lib/rt.jar"/> 
    <pathelement location="${jdk.home}/jre/lib/sunrsasign.jar"/> 
    <pathelement location="${jdk.home}/lib/dt.jar"/> 
    <pathelement location="${jdk.home}/lib/htmlconverter.jar"/> 
    <pathelement location="${jdk.home}/lib/tools.jar"/> 
</path> 
... 
// Rest of your build file 
...