2014-11-08 2 views
0

Я использую Hibernate Tools для генерации pojo и dao в моем проекте. В настоящее время он работает в перспективе Hibernate, используя Run> Hibernate Code Generation ... Тем не менее, я хочу автоматизировать это как часть более сложной сборки, где мне нужно выполнить некоторую предварительную обработку, запустить разделение кода гибернации и сделать некоторые Постобработка. У меня есть Ant файл сборки для этого делать, но я не знаю, как ссылаться на Maven зависимостей JarКак выполнить HibernateToolTask ​​из Ant, когда Hibernate Tools является зависимым от Maven

<?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, чтобы генерировать pojos с hbm.