2012-02-14 7 views
12

Ho aggiornato a una versione più recente di hibernate3-maven-plugin. Ottengo il seguente errore cercando di utilizzare il plugin indicato di seguito.Impossibile generare hbm2ddl utilizzando hibernate3-maven-plugin-3.0

Apprezzerebbe qualsiasi suggerimento per risolvere questo problema.

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>hibernate3-maven-plugin</artifactId> 
    <version>3.0</version> 

    <executions> 
     <execution> 
      <id>create sql schema</id> 
      <phase>process-test-resources</phase> 
      <goals> 
       <goal>hbm2ddl</goal> 
      </goals> 
      <configuration> 
       <componentProperties> 
        <persistenceunit>${app.module}</persistenceunit> 
        <drop>false</drop> 
        <create>true</create> 
        <outputfilename>${app.sql}-create.sql</outputfilename> 
        <skip>${db.schema.gen.skip}</skip> 
       </componentProperties> 
      </configuration> 
     </execution> 

     <execution> 
      <id>drop sql schema</id> 
      <phase>process-test-resources</phase> 
      <goals> 
       <goal>hbm2ddl</goal> 
      </goals> 
      <configuration> 
       <componentProperties> 
        <persistenceunit>${app.module}</persistenceunit> 
        <drop>true</drop> 
        <create>false</create> 
        <outputfilename>${app.sql}-drop.sql</outputfilename> 
        <skip>${db.schema.gen.skip}</skip> 
       </componentProperties> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

[ERROR] Failed to execute goal org.codehaus.mojo:hibernate3-maven-plugin:3.0:hbm2ddl (create sql schema) on project sample: There was an error creating the AntRun task. NullPointerException -> [Help 1]org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.codehaus.mojo:hibernate3-maven-plugin:3.0:hbm2ddl (create sql schema) on project framework: There was an error creating the AntRun task. 

risposta

12

La modalità di configurazione è stata modificata per l'utilizzo diretto del plug-in dello strumento di ibernazione della formica. Quindi la configurazione è esattamente lo stesso formato del plug-in ant, senza la necessità di taskDef aggiuntivo per es. jpaconfiguration. Consultare la documentazione sui riferimenti dello strumento ant hibernate: http://docs.jboss.org/tools/3.3.0.Final/en/hibernatetools/html_single/index.html#d0e4651 per ulteriori informazioni.

Per un hbm2ddl con una configurazione JPA è possibile utilizzare il seguente:

<plugin> 
    <!-- run "mvn hibernate3:hbm2ddl" to generate a schema --> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>hibernate3-maven-plugin</artifactId> 
    <version>3.0</version> 

    <configuration> 
     <hibernatetool> 
      <jpaconfiguration persistenceunit="unitname" /> 

      <hbm2ddl export="false" create="true" 
       update="true" format="true" outputfilename="schemaDiff.ddl" /> 

     </hibernatetool> 
    </configuration> 
</plugin> 

Su fallimenti c'è il file "target/antrun/build-main.xml" che configura gli strumenti di sospensione. Per l'esempio di sopra di questa si presenta come segue:

<?xml version="1.0" encoding="UTF-8" ?> 
<project name="maven-antrun-" default="main" > 
<target name="main"> 
    <taskdef classname="org.hibernate.tool.ant.EnversHibernateToolTask" name="hibernatetool"/> 
    <mkdir dir="/home/xxx/workspace/projectname/target/sql/hibernate3"/> 
    <hibernatetool destdir="/home/xxx/workspace/projectname/target/sql/hibernate3"> 
    <jpaconfiguration persistenceunit="schemaDiff"/> 
    <hbm2ddl update="true" export="false" outputfilename="schemaDiff.ddl" format= 
"true" create="true"/> 
    </hibernatetool> 
</target> 
</project> 
+1

Questo non sembra fare la differenza, sto osservando lo stesso errore di prima. –

+0

Il messaggio di debug pertinente potrebbe fornire ulteriori suggerimenti per risolvere questo problema. Basta aggiungere un "-X" o "-debug" al comando maven. – Kuhpid

+1

http://pastebin.com/2QLFjp4q - vedere qui –

3

Ho avuto questo stesso problema, e alla fine è stato risolto seguendo questo esempio (http://www.celinio.net/techblog/?p=1125) e specificando i dipendenze hibernate solo per il plugin. Questo perché nel mio caso ho un modulo oggetto dominio separato che utilizza solo JPA2 (senza riferimenti specifici all'ibernazione), quindi ho avuto bisogno di inserire i deps per la generazione DDL, senza preoccuparmi di ciò che riguarda i dipendenti di questo modulo.

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>hibernate3-maven-plugin</artifactId> 
      <version>3.0</version> 
      <configuration> 
       <components> 
        <component> 
         <name>hbm2ddl</name> 
         <implementation>jpaconfiguration</implementation> 
        </component> 
       </components> 
       <hibernatetool> 
        <classpath> 
         <path location="${project.build.directory}/classes" /> 
         <path location="${project.basedir}/src/main/resources/META-INF/" /> 
        </classpath> 
        <jpaconfiguration persistenceunit="Configuration" /> 
        <hbm2ddl create="true" export="false" drop="true" 
         outputfilename="configuration.sql" format="true" console="true" /> 
       </hibernatetool> 
      </configuration> 
      <dependencies> 
       <dependency> 
        <groupId>org.hibernate.javax.persistence</groupId> 
        <artifactId>hibernate-jpa-2.0-api</artifactId> 
        <version>1.0.0.Final</version> 
       </dependency> 
       <dependency> 
        <groupId>org.hibernate</groupId> 
        <artifactId>hibernate-entitymanager</artifactId> 
        <version>3.6.7.Final</version> 
       </dependency> 
      </dependencies> 
     </plugin> 
    </plugins> 
</build> 
+2

Questa soluzione ha funzionato per me dopo aver aggiunto hibernate-jpa-2.0-api: 1.0.0.Final, hibernate-entitymanager: 3.6.8.Final, hibernate-core: 3.6.8.Final, hibernate-validator: 4.2. 0. Finale nelle dipendenze –

3

devo farlo funzionare come segue:

<plugin> 
<groupId>org.codehaus.mojo</groupId> 
<artifactId>hibernate3-maven-plugin</artifactId> 
<version>3.0</version> 
<executions> 
    <execution> 
     <id>create-schema</id> 
     <phase>process-test-resources</phase> 
     <goals> 
      <goal>run</goal> 
     </goals> 
     <configuration> 
      <hibernatetool destdir="${project.basedir}"> 
       <classpath> 
        <path 
         location="${project.basedir}/src/main/resources/mappings/" /> 
       </classpath> 
       <configuration 
        configurationfile="${project.basedir}/src/test/resources/hibernate.cfg.xml" /> 
       <hbm2ddl create="true" export="false" 
        drop="true" outputfilename="schema.sql" 
        format="true" console="false" /> 
      </hibernatetool> 
     </configuration> 
    </execution> 
</executions> 

L'idea di base è quella di utilizzare 'run' l'obiettivo e quindi configurare hibernatetool per eseguire gli esportatori che si desidera. In questo modo puoi eseguire più esportatori in una volta aggiungendo più configurazioni di esportatori all'interno del tag. Per ulteriori informazioni, guarda qui http://docs.jboss.org/tools/2.0.0.GA/hibernatetools/en/html_single/index.html e http://mojo.codehaus.org/hibernate3-maven-plugin/examples/run-multiple-goals.html. Mi ci sono volute un paio d'ore per capire. Spero che aiuto!