通过Annotation Beans中的Hibernate 3.xx中的Ant任务生成SQL DDL

时间:2012-08-31 02:27:34

标签: hibernate spring-mvc ant hibernate-tools

我的项目设置是Hibernate 3.2.5,MySQL,Spring MVC,NetBeans Apache 7.xx


我在构建过程中没有遇到任何错误。跑。

尝试通过Ant任务从注释bean生成SQL DDL脚本,但是我收到以下错误:

Reference C:/cmgr/build/web/WEB-INF/lib/hibernate-tools.jar not found.

但是当我检查路径时,会出现hibernate-tools.jar。


导致错误的Ant taskdef部分:

<taskdef
    name="hibernatetool" classname="org.hibernate.tool.ant.HibernateToolTask"
    classpathref="C:/cmgr/build/web/WEB-INF/lib/hibernate-tools.jar">

hibernate_ddl.xml(整个Ant文件)

    <?xml version="1.0" encoding="UTF-8"?>
<project name="yourmarketnet" default="all" basedir=".">
    <property name="build.dir" value="C:/cmgr/build" />
    <property name="src.dir" value="C:/cmgr/src/java" />
    <target name ="ddl_generation">
<!-- paths to required jars  -->
        <path id="toolslib">
            <path location="${build.dir}/web/WEB-INF/lib/hibernate-annotations.jar" />
            <path location="${build.dir}/web/WEB-INF/lib/hibernate-commons-annotations.jar" />
            <path location="${build.dir}/web/WEB-INF/lib/dom4j-1.6.1.jar" />
            <path location="${build.dir}/web/WEB-INF/lib/org-apache-commons-logging.jar" />
            <path location="${build.dir}/web/WEB-INF/lib/hibernate-entitymanager.jar" />
            <path location="${build.dir}/web/WEB-INF/lib/hibernate-tools.jar"/>
            <path location="${build.dir}/web/WEB-INF/lib/hibernate-entitymanager.jar" />
            <path location="${build.dir}/web/WEB-INF/lib/javaassist.jar" />
            <path location="${build.dir}/web/WEB-INF/lib/hibernate-tools.jar"/>
            <path location="${build.dir}/web/WEB-INF/lib/hibernate3.jar"/>
            <path location="${build.dir}/web/WEB-INF/lib/freemarker-2.3.4.jar"/>
            <path location="${build.dir}/web/WEB-INF/lib/ejb3-persistence.jar" />
        <!-- JDBC DRIVER PATH mysql-connector-java-5.1.20-bin.jar--> 
            <path location="${build.dir}/web/WEB-INF/lib/mysql-connector-java-5.1.20-bin.jar"/>
        </path>
         <!-- taskdef -->
        <taskdef name="hibernatetool" classname="org.hibernate.tool.ant.HibernateToolTask" classpathref="C:/cmgr/build/web/WEB-INF/lib/hibernate-tools.jar">
             <!--  path to annotation beans --> 
            <classpath>
                <pathelement path="${build.dir}/web/WEB-INF/classes/com/cmgr/beans" />
            </classpath> 
        </taskdef>
<!-- output DDL script destination -->
        <hibernatetool destdir="${src.dir}">
            <!-- path to hibernate.cfg.xml -->
            <AnnotationConfiguration configurationfile="${src.dir}/resources/hibernate.cfg.xml"/>
<!-- list exporters here -->
            <hbm2ddl
                export="false"
                update="false"
                drop="true"
                create="true"
                outputfilename="${src.dir}/resources/myApps.ddl"
                delimiter=";"
                format="false"
                haltonerror="true"/>
        </hibernatetool>
    </target>
</project>

根据我的项目设置,有人可以提出建议吗?

1 个答案:

答案 0 :(得分:0)

您需要Ant taskdef任务classpath参数而不是classpathrefref参数用于传入在别处定义的Ant引用ID而不是文件系统路径。

那是:

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