2011-07-04 7 views
1

La première fois que j'ai construit mon projet, je savais déjà que je deviendrais fou si ça n'arrêtait pas de faire les choses deux fois et maintenant le moment est venu. Je n'ai pas encore trouvé de solution ou peut-être que je ne sais pas comment rechercher ce problème.Hibernate3 Mauvaise configuration du plugin Maven?

J'ai quelques fichiers hbm.xml qui sont traités dans mon processus de construction. Tout d'abord, vous pouvez regarder la partie de mon pom.xml qui devrait faire l'affaire.

 <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-resources</phase> 
        <goals> 
         <goal>hbm2java</goal> 
        </goals> 
       </execution> 
       <execution> 
        <id>generate-schema</id> 
        <phase>compile</phase> 
        <goals> 
         <goal>hbm2ddl</goal> 
        </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <components> 
        <component> 
         <name>hbm2cfgxml</name> 
         <implementation>configuration</implementation> 
         <outputDirectory>target/classes</outputDirectory> 
        </component> 
        <component> 
         <name>hbm2java</name> 
         <implementation>configuration</implementation> 
         <outputDirectory>src/main/java</outputDirectory> 
        </component> 
        <component> 
         <name>hbm2ddl</name> 
         <implementation>configuration</implementation> 
         <outputDirectory>target/classes</outputDirectory> 
        </component> 
       </components> 
       <componentProperties> 
        <jdk5>true</jdk5> 
        <packagename>com.blazebit.web.cms.core.model</packagename> 
        <propertyfile>src/main/resources/database.properties</propertyfile> 
        <configurationfile>target/classes/hibernate.cfg.xml</configurationfile> 
        <!-- Tells the plugin to send the output to a file --> 
        <outputfilename>schema.sql</outputfilename> 
        <!-- Pretty Format SQL Code --> 
        <format>true</format> 
        <!-- Do not create tables automatically - other plug-ins will handle that --> 
        <export>false</export> 
        <!-- Do not print the DDL to the console --> 
        <console>false</console> 
       </componentProperties> 
      </configuration> 
      <dependencies> 
       <dependency> 
        <groupId>mysql</groupId> 
        <artifactId>mysql-connector-java</artifactId> 
        <version>5.0.8</version> 
       </dependency> 
       <dependency> 
        <groupId>cglib</groupId> 
        <artifactId>cglib-nodep</artifactId> 
        <version>2.1_3</version> 
       </dependency> 
      </dependencies> 
     </plugin> 
     <plugin> 
      <groupId>com.blazebit</groupId> 
      <artifactId>HibernateCfgBuilder</artifactId> 
      <version>1.0</version> 
      <executions> 
       <execution> 
        <id>HibernateCfgBuilder</id> 
        <phase>generate-sources</phase> 
        <goals> 
         <goal>HibernateCfgBuilder</goal> 
        </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <hbmXmlFilesDir>src/main/resources/com/blazebit/web/cms/core/model/</hbmXmlFilesDir> 
       <configFile>target/classes/hibernate.cfg.xml</configFile> 
       <packageName>com.blazebit.web.cms.core.model</packageName> 
      </configuration> 
     </plugin> 

Maintenant laissez-moi vous expliquer ce que tout cela devrait faire.

  • La première chose est hbm2cfg je pense, il devrait créer un hibernate.cfg.xml
  • Deuxième étape est mon propre plug-in, qui ajoute les chemins aux fichiers hbm.xml dans le hibernate.cfg.xml (n'a pas pu trouver d'autres solutions pour ce problème)
  • la troisième étape est hbm2java qui devrait générer les fichiers java dans mon répertoire sources
  • Et hbm2ddl enfin il devrait créer le schema.sql pour ce modèle dans le classpath

Donc unds assez simple? Cela fonctionne même, mais il semble faire quelques choses deux fois ou même plus et maintenant ma construction prend environ 2 minutes ce qui m'ennuie:/ Quelqu'un pourrait-il me donner un conseil sur ce que je pourrais changer pour que ces étapes fonctionnent?

Répondre

1

Je pense qu'il appelle deux buts deux fois parce que certains hibernate3-maven-plugin objectifs "Invokes the execution of the lifecycle phase generate-resources prior to executing itself" as described in documentation. J'ai aussi fait face à ce problème et si ça vous ennuie vraiment, alors je suggère d'essayer de les appeler en tant que cibles Ant de maven-antrun-plugin (mais je ne le testerai pas).

+0

Je pense à écrire mon propre plugin qui fait ces étapes ... –

+0

il y a un problème de performance majeur avec la génération de fichiers avec hbm2x. Il faut environ 2 secondes pour que chaque fichier hbm.xml soit traité. Ma dernière solution a été de créer un nouveau profil dans lequel les objectifs sont appelés, le profil doit être défini manuellement. J'ai également enlevé le hbm2cfg et étendu mon plugin pour analyser le database.properties parce que c'est beaucoup plus rapide comme ça! –

Questions connexes