Le plugin Maven 2 pour utiliser JAXB-2

Posted in Java/J2EE on mai 7th, 2009 by Ajrarn

…le projet sur lequel je travaille, pour mon client actuel, et sur lequel j’ai mis en place une structure de gestion de projet avec Maven 2, nécessite l’utilisation de JAXB-2.

J’ai ainsi découvert qu’il existait un plugin Maven très simple d’utilisation, permettant de générer les classes Java correspondant aux schémas .xsd automatiquement durant la phase de compilation de Maven.

Avant de rentrer dans le vif du sujet, je précise que j’utilise la dernière version du JDK 1.6 : le 1.6.0_13.

Java 6 propose les APIs JAXB 2.1 dans son rt.jar depuis l’update 4, semble-t-il. Mettez donc à jour votre JDK pour profiter pleinement de JAXB-2.

Pour utiliser JAXB-2 directement avec Maven, il est nécessaire d’ajouter un plugin dédié dans votre fichier pom.xml et de forcer la compilation Java avec une version 1.6.

Voici ce que vous devez ajoutez :

<build>
  <plugins>
  ...
    <plugin>
      <groupId>
        org.jvnet.jaxb2.maven2
      </groupId>
      <artifactId>
        maven-jaxb2-plugin
      </artifactId>
      <executions>
        <execution>
          <goals>
            <goal>
              generate
            </goal>
          </goals>
        </execution>
      </executions>
    </plugin>
    <plugin>
      <inherited>
        true
      </inherited>
      <groupId>
        org.apache.maven.plugins
      </groupId>
      <artifactId>
        maven-compiler-plugin
      </artifactId>
      <configuration>
        <source>
          1.6
        </source>
        <target>
          1.6
        </target>
      </configuration>
    </plugin>
    ...
  </plugins>
...
</build>

Il ne vous reste plus qu’à ajouter vos schémas XML (.xsd) dans le répertoire de ressources src/main/resources et de lancer la phase de compilation Maven, en vous plaçant dans le répertoire de votre projet contenant le pom.xml et en lançant la commande suivante :

mvn compile

ou directement :

mvn install

Vous trouverez les classes résultantes de la génération JAXB-2 dans le répertoire target/generated-sources/xjc.

Si en plus, vous utilisez Eclipse et le plugin M2Eclipse, vous n’avez rien à faire du tout… Les classes sont générées directement lorsque vous enregistrez votre pom.xml.

Magique non?

Pour finir, un petit rappel sur la manière de sérialiser vos objets Java à partir d’un fichier XML avec JAXB.

Je pars du principe qu’un fichier test.xml se trouve dans le classpath du projet et qu’on souhaite sérialiser une classe Toto.

JAXBContext jaxbContext = null;
Toto toto = null;
try {
  jaxbContext = JAXBContext
        .newInstance(Config.class);
  Unmarshaller unMarshaller = jaxbContext
        .createUnmarshaller();
  InputStream is = getClass()
        .getResourceAsStream("/test.xml");
  toto = (Toto) unMarshaller
        .unmarshal(is);
} catch (JAXBException e) {
  //Un petit commentaire
  //Une trace de log
  //La gestion de l'exception
}

Tags: , , , , , ,

Les Cast Codeurs

Posted in Java/J2EE on mai 4th, 2009 by Ajrarn

…en suivant les bons conseils de mon pote Sylvek, j’ai découvert un site de podcast dédié à Java, au sens large, nommé les Cast Codeurs.

Ces podcasts sont réalisés par des pointures du développement Open Source français et a pour ambition de nous faire découvrir régulièrement l’actualité du monde Java.

Les deux premiers épisodes sont très intéressants et j’ai eu notamment le plaisir de voir, qu’a été abordé, comme “outil utile”, M2Eclipse, un plugin Eclipse pour Maven que j’utilise depuis quelques temps et dont j’aurai beaucoup de mal à me passer dorénavant. J’en parlerai plus longuement dans un post dédié prochainement.

En tout cas, bon vent aux Cast Codeurs! J’attends l’épisode 3!

Tags: , , , ,