• Génération jaxb avec Maven à partir d’une xsd

    Si vous êtes l’heureux élu d’une XSD dans votre projet…Bravo ! A partir de cette XSD on va pouvoir grâce  à jaxb :

    1. Générer les pojos java (décoré des annotations JAXB).
    2. faire du marshalling / unmarshalling.

    Nous nous intéresserons au point 1. Comment bien gérer cette phase de génération? Comprenons que ces POJOs générer sont, d’une part soumis au changement pour toute modification du XSD et d’autre part n’a pas lieu de faire partie intégrante de votre projet au sens package java. Le seul élément qui doit se retrouver dans votre projet c’est la XSD lui même. L’idée est donc d’avoir la XSD au niveau de nos ressources projets et de demander à Maven de s’occuper de générer les pojos à partir de la XSD puis d’ajouter ces derniers au classpath de notre livrable (jar,war,ear…etc)  à chaque build de Maven.

    Prenons une XSD connue du milieu bancaire (flux SEPA) :  https://github.com/w2c/sepa-sdd-xml-generator/blob/master/validation_schemes/pain.008.003.02.xsd.

    • Etape 1 : Bien positionner la XSD

    Placer la XSD dans scr/main/ressources/maXSD 

    • Etape 2 : Configuration de Maven

    Dans notre pom maven nous ajoutons le plugin pour la génération des POJOS. Il convient d’indiquer le chemin de la xsd ainsi que le nom du package qu’on souhaite donner pour la génération.

    </pre>
    <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>jaxb2-maven-plugin</artifactId>
    <executions>
    <execution>
    <id>xjc</id>
    <goals>
    <goal>xjc</goal>
    </goals>
    <configuration>
    <schemaDirectory>src/main/resources/xsd</schemaDirectory>
    <packageName>fr.cadjee.sepa.jaxb</packageName>
    </configuration>
    </execution>
    </executions>
    </plugin>
    <pre>
    •  Etape 3 : C’est fini…lancer le build

    Lancer votre mvn clean install  :

    genJAXB

    voici un aperçu général de l’arborescence:

    jaxb-rep    jaxb1

     

    On peut bien entendu gérer plusieurs XSD dans des répertoires différents soit en ajoutant une autre exécution ou en utilisant le fichier xjb.

    Categories: Java, JAXB, Maven, XSD

    Comments are currently closed.