134 votes

Différence de Maven JAXB plugins

J'ai déterminé que deux JAXB plugins Maven 2, existent, avec certaines configurations différentes.

La une du Soleil: http://jaxb.dev.java.net/jaxb-maven2-plugin/, l'autre de Codehaus: http://mojo.codehaus.org/jaxb2-maven-plugin/

Laquelle de ces deux plugins qui peut être recommandé?


Merci Matt. Sur mon petit projet de recherche, j'ai trouvé qu'il y en a un autre plugin venant de l'sunners:

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

et celle-là:

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

et encore, l'un de Codehouse.

112voto

Pascal Thivent Points 295221

Résumons. Nous avons:

  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/)

Sur la base des commentaires de ce fil, j'ai toujours utilisé le maven-jaxb2-plugin (c'est à dire plugin #1):

Concernant l' org.jvnet.jaxb2.maven2:maven-jaxb2-plugin rapport 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 JAXB développeurs et les utilisateurs et de réagir à la latests caractéristiques/demandes.

EDIT Michael-O (2013-11-21): Le référentiel de l'information ci-dessous est maintenant inutile pour plugin #1 parce que le plugin est déjà dans Maven Central.

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

<project>
  ...
  <repositories>
    <repository>
      <id>maven2-repository.dev.java.repositorynet</id>
      <name>Java.net Maven 2 Repository</name>
      <url>http://download.java.net/maven/2</url>
    </repository>
    <repository>
      <id>maven-repositoriesository.dev.java.net</id>
      <name>Java.net Maven 1 Repository (legacy)</name>
      <url>http://download.java.net/maven/1</url>
      <layout>legacy</layout>
    </repository>
  </repositories>
  <pluginRepositories>
    <pluginRepository>
      <id>maven2-repository.dev.java.net</id>
      <name>Java.net Mavenen 2 Repository</name>
      <url>http://download.java.net/maven/2</url>
    </pluginRepository>
    <pluginRepository>
      <id>maven-repository.dev.java.repositorynet</id>
      <name>Java.net Maven 1 Repository (legacy)</name>
      <url>http://download.java.net/maven/1</url>
      <layout>legacy</layout>
    </pluginRepository>
  </pluginRepositories>
  ...
  <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>

50voto

bn. Points 2551

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 CXF XJC Plugin 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 les mêmes définitions d'éléments sur plusieurs .les fichiers xsd dans JAXB?.

J'ai maintenant un contrôle granulaire sur chaque entrant XSD et correspondant package java; 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>

21voto

lexicore Points 7723

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

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

Comme pour "quel plugin est mieux" de la discussion, vérifiez les caractéristiques, décidez vous-même. Laissez-moi savoir si vous manquez de certaines fonctionnalités.

4voto

rds Points 5742
  • maven-jaxb2-plugin utilise la JAXB de référence de mise en œuvre par Oracle/Sun
  • cxf et jaxb2-maven-plugin utiliser Apache Xerces

2voto

Ed Staub Points 7386

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

Ce n'est pas destiné à être en désaccord, à tous, avec la recommandation de maven-jaxb2-plugin plus de maven2-jaxb-plugin. Je ne sais pas, mais je pense que maven2-jaxb-plugin a le même problème, probablement en suspens.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X