Différence de plugins Maven JAXB

j'ai déterminé que deux JAXB plugins pour Maven 2 existent, avec des configurations différentes.

La une du 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 a tout un autre plugin venant des Sunner:

<groupId>com.sun.tools.xjc.maven2</groupId>  
<artifactId>maven-jaxb-plugin</artifactId>  

et celui-là:

<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>

et toujours celui de Codehouse.

118
demandé sur Efthymis 2010-03-12 16:07:40

6 réponses

résumons. Nous avons:

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

basé sur les commentaires de ce fil , j'ai toujours utilisé le maven-jaxb2-plugin (i.e. plugin #1):

concernant la org.jvnet.jaxb2.maven2:maven-jaxb2-plugin contre COM.soleil.outils.xjc.maven2:maven-jaxb-plugin, de mon point de vue, il est certainement le premier ( http://maven-jaxb2-plugin.java.net / ).

ce plugin a beaucoup plus de fonctionnalités que COM.soleil.outils.xjc.maven2:maven-jaxb-plugin, le développement est actif. Enfin, Je suis l'un des auteurs :) et je dirais nous restons en contact avec les développeurs de JAXB et les utilisateurs et de réagir aux latests caractéristiques/demandes.

et en effet, le plugin #2 n'est pas très actif (dead?). Et parce que j'ai toujours été heureux avec #1, Je n'ai jamais utilisé le plugin #3 donc je ne peux pas vraiment dire quoi que ce soit à ce sujet. Juste au cas où, voici une configuration de travail pour le plugin #1:

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <inherited>true</inherited>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.5</source>
          <target>1.5</target>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.jvnet.jaxb2.maven2</groupId>
        <artifactId>maven-jaxb2-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>generate</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>
97
répondu Pascal Thivent 2015-10-16 20:26:39

récemment, j'ai essayé les trois plugins mentionnés ci-dessus (inclus ici):

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

j'ai fini par utiliser une quatrième option: le Plugin CXF XJC Maven http://cxf.apache.org/cxf-xjc-plugin.html

Si je suis absent quelque chose que je voudrais savoir, mais la configuration semblait plus simple pour ce que j'essayais de faire plus facilement et m'a permis de traiter avec des doublons de génération de classe au sein du même espace de noms -- semblable à cette question: Est-il un moyen de traiter avec des doublons définitions d'éléments multiples .les fichiers xsd dans JAXB? .

j'ai maintenant un contrôle granulaire sur chaque paquet xsd entrant et java correspondant; voici un exemple de configuration proche de celle que j'utilise.

 <plugin>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-xjc-plugin</artifactId>
    <version>2.3.0</version>
    <configuration>
        <extensions>
            <extension>org.apache.cxf.xjcplugins:cxf-xjc-dv:2.3.0</extension>
        </extensions>
    </configuration>
    <executions>
        <execution>
            <id>generate-sources</id>
            <phase>generate-sources</phase>
            <goals>
                <goal>xsdtojava</goal>
            </goals>
            <configuration>
                <sourceRoot>${basedir}/target/generated-sources/src/main/java</sourceRoot>
                <xsdOptions>
                    <xsdOption>
                        <xsd>src/main/resources/schema/commands.xsd</xsd> <!--shares a common.xsd file causing the conflicts-->
                        <packagename>com.foo.bar.commands</packagename>
                    </xsdOption>
                    <xsdOption>
                        <xsd>src/main/resources/schema/responses.xsd</xsd>
                        <packagename>com.foo.bar.responses</packagename>
                    </xsdOption>
                </xsdOptions>
            </configuration>
        </execution>
    </executions>
</plugin>
39
répondu bn. 2017-05-23 12:25:57

je suis l'auteur de maven-jaxb2-plugin .

le maven-jaxb2-plugin utilise actuellement JAXB 2.1. Dans les prochaines versions, nous fournirons aussi les versions JAXB 2.0 et JAXB 2.2.

quant à" quel plugin est le meilleur "discussion, vérifier les fonctionnalités , décidez vous-même. Dites-moi si vous manquez de fonctionnalité.

20
répondu lexicore 2012-06-03 13:38:53
  • maven-jaxb2-plugin utilise L'implémentation de référence JAXB par Oracle / Sun
  • cxf et jaxb2-maven-plugin utiliser Apache Xerces
3
répondu rds 2012-10-16 11:59:16

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

ce n'est pas destiné à être en désaccord, du tout, avec la recommandation de maven-jaxb2-plugin sur maven2-jaxb-plugin. Je ne sais pas, mais je m'attends à ce que maven2-jaxb-plugin ait le même problème, probablement non résolu.

2
répondu Ed Staub 2017-05-23 12:17:50

je suppose que l'un est pour la spécification D'origine JAXB et le codehaus un est pour la spécification JAXB 2.1 (et si le dev.java.net serait charger un certain temps ce siècle, je serais en mesure de dire à coup sûr).

0
répondu matt b 2010-03-12 13:09:51