Question

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

L'un est 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 peuvent être recommandées?


Merci Matt. Sur mon petit projet de recherche, je trouve qu'il ya une autre plug-in comming des sunners:

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

et que celui-ci:

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

et encore celle de Codehouse.

Était-ce utile?

La solution

Résumons. Nous avons:

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

D'après les commentaires de ce fil , je l'ai toujours utilisé le maven-plugin-jaxb2 (ie plug-in # 1 ):

  

En ce qui concerne la   org.jvnet.jaxb2.maven2: maven-plugin-jaxb2   contre   com.sun.tools.xjc.maven2: maven-plugin-JAXB,   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.sun.tools.xjc.maven2: maven-plugin-JAXB,   le développement est actif. Finalement,   Je suis l'un des auteurs :) et je dirais   nous restons en contact avec les développeurs JAXB   et les utilisateurs et réagissent aux actus   caractéristiques / demandes.

Et en effet, le plug-in # 2 n'est pas très actif (mort?). Et parce que je l'ai toujours été heureux avec # 1, je ne l'ai jamais utilisé le plugin # 3 ne peut donc 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>

Autres conseils

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

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

Je fini par utiliser une quatrième option: Le CXF XJC Maven Plugin y at-il un moyen de traiter les définitions d'éléments en double dans plusieurs fichiers .xsd dans JAXB .

J'ai maintenant un contrôle granulaire sur chaque XSD entrant et package java correspondant; voici un exemple de configuration proche de celle que je me sers.

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

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

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

En ce qui concerne « plug-in qui est mieux » discussion, vérifier les caractéristiques , décidez vous-même . Faites-moi savoir si vous manquez certaines fonctionnalités.

  • maven-plugin-jaxb2 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 de Maven-jaxb2-plugin avec Eclipse Indigo que je posté ici . Un correctif (extension) est récemment devenu disponible.

Ce ne vise pas à être en désaccord, tout, avec la recommandation de maven-plugin-jaxb2 sur maven2-JAXB-plugin. Je ne sais pas, mais j'attendre à ce que maven2-JAXB-plugin a le même problème, probablement pas résolu.

Je suppose que l'on est pour la spécification JAXB originale et Codehaus on est pour la spécification JAXB 2.1 (et si le dev.java.net chargerait quelque temps de ce siècle, je serais capable de dire à coup sûr) .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top