Aprés avoir pas mal galéré pour faire générer mon mapping Hibernate depuis XDoclet2, lui même lancé via Maven2, j'ai enfin réussi à avoir une configuration qui me convient.
Pour avoir tout le bazar fonctionnel, il faut d'abord réussir à intégrer XDoclet2 et Maven2. Et vu le statut encore trés "développement" du plugin XDoclet2, ça n'a pas été évident de trouver la bonne configuration. Au final voilà ma configuration fonctionnelle :
<build>
<plugins>
<plugin>
<groupId>xdoclet</groupId>
<artifactId>maven2-xdoclet2-plugin</artifactId>
<version>2.0.5-SNAPSHOT</version>
<executions>
<execution>
<goals>
<goal>xdoclet</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>xdoclet-plugins</groupId>
<artifactId>xdoclet-plugin-hibernate</artifactId>
<version>1.0.4-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>xdoclet-plugins</groupId>
<artifactId>xdoclet-plugin-hibernate</artifactId>
<version>1.0.4-SNAPSHOT</version>
</dependency>
</dependencies>
<configuration>
<configs>
<config>
<plugin>org.xdoclet.plugin.hibernate.HibernateMappingPlugin</plugin>
<params>
<version>3.0</version>
<destdir>${basedir}/target/classes/</destdir>
</params>
</config>
<config>
<plugin>org.xdoclet.plugin.hibernate.HibernateConfigPlugin</plugin>
<params>
<dialect>org.hibernate.dialect.HSQLDialect</dialect>
<jdbcdriver>org.hsqldb.jdbcDriver</jdbcdriver>
<jdbcurl>jdbc:hsqldb:mem:taskmanager</jdbcurl>
<jdbcusername>sa</jdbcusername>
<jdbcpassword></jdbcpassword>
<hbm2ddlauto>create</hbm2ddlauto>
<showsql>true</showsql>
<version>3.0</version>
</params>
</config>
</configs>
</configuration>
</plugin>
</plugins>
</build>
<pluginRepositories>
<pluginRepository>
<releases />
<snapshots />
<id>codehaus-plugins-legacy</id>
<url>http://dist.codehaus.org/</url>
<layout>legacy</layout>
</pluginRepository>
<pluginRepository>
<releases />
<snapshots />
<id>codehaus-plugins</id>
<url>http://dist.codehaus.org/</url>
</pluginRepository>
</pluginRepositories>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
</dependency>
<dependency>
<groupId>hibernate</groupId>
<artifactId>hibernate</artifactId>
<version>3.0.5</version>
</dependency>
Il est important de remarquer plusieurs choses :
- On utilise la version 1.0.4-SNAPSHOT du plugin
- On est dans l'obligation d'ajouter 2 dépôts supplémentaires donc l'un doit être au format legacy (ceci parce que le dépôt des plugins xdoclet n'a pas encore migrer vers Maven2)
Cependant chez moi la génération de la configuration Hibernate était d'une lenteur incroyable - dans les 40s. Bien que je n'explique pas trop le pourquoi, je suis donc partie à la recherche d'une solution plus viable. Et Spring est venu à moi.
En effet, étant donnée que la configuration Hibernate en elle même risque peu de changer, je l'ai directement inséré dans mon applicationContext-hibernate.xml. Le plugin XDoclet2 pour Maven2 s'occupant dorénavant que de la génération des fichiers mappings (*.hbm.xml), l'ensemble est plus rapide.