Différence de plugins Maven JAXB

J’ai déterminé que deux plug-ins JAXB pour Maven 2 existent, avec différentes configurations.

Celui de Sun: http://jaxb.dev.java.net/jaxb-maven2-plugin/ , l’autre de Mojohaus: http://mojohaus.org/jaxb2-maven-plugin/

Lequel de ces deux plugins peut être recommandé?


Merci Matt. Sur mon petit projet de recherche, j’ai trouvé qu’il y avait un autre plugin venant des sunners:

com.sun.tools.xjc.maven2 maven-jaxb-plugin 

et celui-là:

 org.jvnet.jaxb2.maven2 maven-jaxb2-plugin 

et toujours celui de Codehouse.

Résumons. Nous avons:

  1. le plugin maven-jaxb2 ( https://github.com/highsource/maven-jaxb2-plugin )
  2. le plugin maven-jaxb ( https://jaxb.dev.java.net/jaxb-maven2-plugin/ )
  3. le plugin jaxb2-maven ( https://github.com/mojohaus/jaxb2-maven-plugin )

D’après les commentaires de ce sujet , j’ai toujours utilisé le plugin maven-jaxb2 (c. -à- d. Le plugin n ° 1):

Concernant le plugin org.jvnet.jaxb2.maven2: maven-jaxb2 contre com.sun.tools.xjc.maven2: maven-jaxb-plugin, de mon sharepoint vue c’est définitivement le premier ( http: // maven-jaxb2 -plugin.java.net/ ).

Ce plugin a beaucoup plus de fonctionnalités que com.sun.tools.xjc.maven2: maven-jaxb-plugin, le développement est actif. Enfin, je suis l’un des auteurs 🙂 et je dirais que nous restons en contact avec les développeurs et les utilisateurs de JAXB et que nous réagissons aux dernières fonctionnalités / demandes.

Et en effet, le plugin n ° 2 n’est pas très actif (mort?). Et parce que j’ai toujours été satisfait du n ° 1, je n’ai jamais utilisé le plug-in n ° 3, donc je ne peux pas vraiment en parler. Au cas où, voici une configuration de travail pour le plugin n ° 1:

  ...    true org.apache.maven.plugins maven-comstackr-plugin  1.5 1.5    org.jvnet.jaxb2.maven2 maven-jaxb2-plugin    generate        

J’ai récemment essayé les trois plug-ins mentionnés ci-dessus (inclus ici également):

  1. le plugin maven-jaxb2 ( http://maven-jaxb2-plugin.java.net/ )
  2. le plugin maven-jaxb ( https://jaxb.dev.java.net/jaxb-maven2-plugin/)
  3. le plugin jaxb2-maven ( http://mojo.codehaus.org/jaxb2-maven-plugin/ )

J’ai fini par utiliser une quasortingème option: le plugin CXF XJC Maven http://cxf.apache.org/cxf-xjc-plugin.html

Si je manque quelque chose, je voudrais savoir, mais la configuration semblait plus simple pour ce que j’essayais de faire et me permettait plus facilement de traiter la génération de classes en double dans le même espace de noms – comme sur cette question: façon de traiter les définitions d’éléments en double sur plusieurs fichiers .xsd dans JAXB? .

J’ai maintenant un contrôle granulaire sur chaque XSD entrant et le package Java correspondant; Voici un exemple de configuration proche de celui que j’utilise.

   org.apache.cxf cxf-xjc-plugin 2.3.0   org.apache.cxf.xjcplugins:cxf-xjc-dv:2.3.0     generate-sources generate-sources  xsdtojava   ${basedir}/target/generated-sources/src/main/java   src/main/resources/schema/commands.xsd  com.foo.bar.commands   src/main/resources/schema/responses.xsd com.foo.bar.responses       

Je suis l’auteur de maven-jaxb2-plugin .

Le plugin maven-jaxb2 utilise actuellement JAXB 2.1. Dans les prochaines versions, nous fournirons également les versions JAXB 2.0 et JAXB 2.2.

En ce qui concerne la discussion “quel plugin est le meilleur”, vérifiez les fonctionnalités , décidez vous-même. Faites-moi savoir si vous manquez certaines fonctionnalités.

  • maven-jaxb2-plugin utilise l’implémentation de référence JAXB par Oracle / Sun
  • cxf et jaxb2-maven-plugin utilisent Apache Xerces

Sur une légère tangente: il y avait un problème avec l’utilisation du plugin maven-jaxb2 avec Eclipse Indigo que j’ai posté ici . Un correctif (extension) est récemment devenu disponible.

Cela ne veut pas du tout être en désaccord avec la recommandation de maven-jaxb2-plugin sur maven2-jaxb-plugin. Je ne sais pas, mais je pense que maven2-jaxb-plugin a le même problème, probablement non résolu.

J’imagine que l’un est pour la spécification JAXB d’origine et le codehaus pour la spécification JAXB 2.1 (et si le fichier dev.java.net se chargerait quelque temps ce siècle, je serais en mesure de le dire avec certitude).