使用Ant为JPA-Pojos生成Schema-DDL失败

时间:2012-05-14 09:00:50

标签: hibernate ant jboss

我尝试使用schema.ddlentity-pojos生成Hibernate 4.1 包含javaee-api-6.0.jar的Hibernate-Libraries位于WEB-INF/lib。 (项目在JBoss 7.1.1上运行。) 我不想使用hibernate.hbm2ddl.auto来生成自动模式 所以我有以下蚂蚁目标:

<!-- language: xml -->

<target name="ddl-generation"
    description="Export schema to DDL file">

    <taskdef name="schemaexport" 
            classname="org.hibernate.tool.hbm2ddl.SchemaExportTask">
        <classpath>
            <fileset dir="WebContent/WEB-INF/lib">
                <include name="*.jar" />
            </fileset>
        </classpath>
    </taskdef>

    <schemaexport
        properties="${basedir}/src/META-INF/hibernate.properties" 
        quiet="no"
        text="no"
        drop="no"
        delimiter=";"
        output="${basedir}/schema-export.sql" />

</target>

但是当我执行它时,它失败并出现以下错误:

java.lang.ClassNotFoundException: org.jboss.logging.BasicLogger
    at org.apache.tools.ant.AntClassLoader.findClassInComponents(AntClassLoader.java:1361)
    at org.apache.tools.ant.AntClassLoader.findClass(AntClassLoader.java:1311)
    at org.apache.tools.ant.AntClassLoader.loadClass(AntClassLoader.java:1064)

我可以将jboss-logging-3.1.0.GA.jar复制到ant-target的类路径中,但之后失败,因为javaee-api-6.0.jar仅用于编译:

java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/transaction/SystemException
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:615)

我该怎么做才能解决这个问题? 复制所有Jboss-Jars?!
如何使用DDLJPA-Pojos生成Hibernate 4? 使用Hibernate3似乎效果更好。

1 个答案:

答案 0 :(得分:2)

您可能会发现此博客文章有用http://doingenterprise.blogspot.com/2012/05/schema-generation-with-hibernate-4-jpa.html它描述了从JPA 2.0实体生成ddl脚本的过程。虽然它使用Maven作为示例,但它可以很容易地被采用到Ant,因为它只使用main方法运行一个类。您只需要获得正确的依赖项。这份清单应该有望涵盖所有这些:

  • hibernate-entitymanager-4.1.3.Final.jar
  • 的JBoss-测井3.1.0.GA.jar
  • jboss-transaction-api_1.1_spec-1.0.0.Final.jar
  • DOM4J-1.6.1.jar
  • hibernate-jpa-2.0-api-1.0.1.Final.jar
  • 了Javassist-3.15.0-GA.jar
  • hibernate-core-4.1.3.Final.jar
  • ANTLR-2.7.7.jar
  • hibernate-commons-annotations-4.0.1.Final.jar
  • 持久性的API-1.0.jar