2010-05-30 4 views
3

J'essaie de migrer ma construction ant vers maven2. dans mon build.xml j'invoque la hbm2java de la manière suivante:Comment configurer le plugin hbm2java maven2 pour générer des POJO pour tous les fichiers de mappage

<hibernatetool destdir="/src/generated/"> 
     <configuration configurationfile="${env.ITP_HOME}/core/xml/hibernate/hibernate.cfg.xml"> 
      <fileset dir="/xml/hibernate"> 
       <include name="*.hbm.xml"/> 
      </fileset> 
     </configuration> 
     <hbm2java/> 
    </hibernatetool> 

mon hibernate.cfg.xml est:

<hibernate-configuration> 
<session-factory> 
<property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property> 
    <property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>   
</session-factory>  

dans mon dossier maven2 POM je:

<plugin> 
<groupId>org.codehaus.mojo</groupId> 
<artifactId>hibernate3-maven-plugin</artifactId> 
<version>2.2</version> 
<executions> 
<execution> 
    <id>hbm2java</id> 
    <phase>generate-sources</phase> 
    <goals> 
    <goal>hbm2java</goal> 
    </goals> 
    <configuration> 
    <components> 
    <component> 
    <name>hbm2java</name> 
    <implementation>configuration</implementation> 
    <outputDirectory>/src/main/java</outputDirectory> 
    </component> 
    </components> 
    <componentProperties> 
    <jdk5>true</jdk5> 
    <configurationfile>/src/main/resources/hibernate.cfg.xml</configurationfile> 
    </componentProperties> 
    </configuration>  
</execution> 

mais lors de l'exécution mvn hibernate3:hbm2java je ne vois aucun fichier généré sauf s'ils sont tous répertoriés dans hiberna te.cfg.xml. Existe-t-il un moyen de spécifier un ensemble de fichiers dans la configuration maven similaire à la tâche ant?

grâce, Naor

+0

Est-ce que quelqu'un a trouvé une solution à cela? J'ai le même problème. Je n'ai pas de base de données en cours d'exécution et je ne peux pas utiliser hbm2cfgxml. –

Répondre

3

Je ne suis pas sûr que ce soit la seule façon mais j'utiliser pour générer hbm2cfgxml d'abord un fichier de configuration hibernate.cfg.xml y compris les <mapping resource="..."/> entrées, puis l'objectif hbm2java pour générer les POJO. Ci-dessous, une configuration faisant cela dans le cadre de votre construction:

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>hibernate3-maven-plugin</artifactId> 
    <version>2.2</version> 
    <executions> 
    <execution> 
     <id>generate-xml-files</id> 
     <phase>generate-resources</phase> 
     <goals> 
     <goal>hbm2cfgxml</goal> 
     </goals> 
    </execution> 
    <execution> 
     <id>generate-entities</id> 
     <phase>generate-sources</phase> 
     <goals> 
     <goal>hbm2java</goal> 
     </goals> 
    </execution> 
    </executions> 
    <configuration> 
    <components> 
     <component> 
     <name>hbm2cfgxml</name> 
     <implementation>jdbcconfiguration</implementation> 
     <outputDirectory>target/classes</outputDirectory> 
     </component> 
     <component> 
     <name>hbm2java</name> 
     <implementation>configuration</implementation> 
     <outputDirectory>target/generated-sources/hibernate3</outputDirectory> 
     </component> 
    </components> 
    <componentProperties> 
     <propertyfile>src/main/resources/database.properties</propertyfile> 
     <jdk5>true</jdk5> 
     <ejb3>false</ejb3> 
     <packagename>com.mycompany.myapp</packagename> 
     <format>true</format> 
     <haltonerror>true</haltonerror> 
    </componentProperties> 
    </configuration> 
    <dependencies> 
    <!-- your JDBC driver --> 
    ... 
    </dependencies> 
</plugin> 

Lorsque le fichier src/main/database.properties contient les informations suivantes

hibernate.connection.driver_class=oracle.jdbc.driver.OracleDriver 
hibernate.connection.url=... 
hibernate.connection.username=... 
hibernate.connection.password=... 
hibernate.dialect=org.hibernate.dialect.Oracle10gDialect 

Cette configuration suppose que votre .hbm.xml sont placés dans src/main/resources (et sera ainsi copiée dans Pour le traitement par hbm2java).

+0

Merci pour la réponse Pascal. J'ai oublié de mentionner que mes constructions ant génère aussi mon script ddl pour construire la base de données dans le cadre de la construction (cible différente). Je souhaite faire une chose similaire dans ma construction de maven2 en utilisant hbm2ddl. Votre solution nécessite-t-elle que ma base de données soit déjà créée pour générer le fichier cfg.xml? Si oui, y a-t-il un moyen d'y parvenir sans pointer vers un schéma existant? – naor

+0

@naor Je ne suis pas sûr que ce soit le cas (les informations de connexion à la base de données seront utilisées pour créer le fichier hibernate.cfg.xml), et je ne peux pas le tester maintenant. Mais peut-être que vous pouvez l'expérimenter. –

+0

Merci Pascal. J'ai fait un test local. malheureusement, je vois que le fichier hibernate.cfg.xml généré répertorie le mappage en fonction du schéma que je pointe vers. Jusqu'à présent, je n'ai trouvé aucune indication que le plugin maven peut supporter de pointer vers un répertoire où se trouvent les fichiers de mapping. ma prochaine étape serait de répertorier les fichiers de mappage manuellement :-( – naor

Questions connexes