2014-11-08 51 views
0

我正在使用Hibernate Tools在我的項目中生成pojo和dao。它目前正在使用運行> Hibernate代碼生成工作在Hibernate透視圖中...... 但是,我想將它自動化爲更復雜的構建的一部分,我需要做一些預處理,運行hibernate代碼生成並執行一些操作後期處理。 我有這樣一個Ant構建文件,但我不知道如何引用Maven依賴罐子如何在Hibernate Tools是Maven依賴時從Ant執行HibernateToolTask​​

<?xml version="1.0" ?> 
<!DOCTYPE project> 
<project name="Hibernate Tools hbm2java" default="gensrc"> 

    <path id="tools"> 
     <!-- 
      Here { 
     --> 
     <path location="lib/hibernate-tools-4.3.1.CR1.jar"/> 
     <!-- more dependencies... --> 
     <!-- 
      } 
     --> 
     ... 
    </path> 
    <taskdef name="gen-src" classname="org.hibernate.tool.ant.HibernateToolTask" 
      classpathref="tools" /> 
    <target name="gensrc"> 
     ... 
    </target> 
</project> 

我得到這樣的警告:

taskdef class org.hibernate.tool.ant.HibernateToolTask cannot be found using the classloader AntClassLoader[] 

與隨之而來的生成錯誤:

BUILD FAILED 
/.../hibernate-gen.xml:16: taskdef class org.hibernate.tool.ant.HibernateToolTask cannot be found using the classloader AntClassLoader[] 

如何可以引用罐子從Maven的依賴致電org.hibernate.tool.ant.HibernateToolTask​​?

回答

1

要自動生成pojo,可以將maven-antrun-plugin插件添加到pom.xml文件中。在這個插件中的任務部分,您可以直接調用由您描述的Ant任務。

<build> 
    ... 
    <plugins> 
     <plugin> 
      <artifactId>maven-antrun-plugin</artifactId> 
      <executions> 
      <execution> 
       <phase>generate-sources</phase> 
       <configuration> 
       <tasks> 
        <taskdef name="hibernatetool" 
          classname="org.hibernate.tool.ant.HibernateToolTask" 
          classpathref="maven.dependency.classpath"/> 

        <hbm2java output="src/generated"> 
         <fileset dir="src/hibernate"> 
          <include name="**/*.hbm.xml"/> 
         </fileset> 
        </hbm2java> 
       </tasks> 
       </configuration> 
       <goals> 
       <goal>run</goal> 
       </goals> 
      </execution> 
      </executions> 
     </plugin> 
    </plugins> 
    </build> 

否則,你可以自動生成pojo類使用Hibernate工具任務務實。請參閱git project以從hbm生成pojos。