plugin java maven-2 jaxb maven maven-plugin

java - Diferencia de plugins Maven JAXB



maven-jaxb2-plugin maven (6)

He determinado que existen dos plugins de JAXB para Maven 2, con algunas configuraciones diferentes.

El uno es de Sun: http://jaxb.dev.java.net/jaxb-maven2-plugin/ , el otro de Mojohaus: http://mojohaus.org/jaxb2-maven-plugin/

¿Cuál de estos dos complementos se puede recomendar?

Gracias Matt. En mi pequeño proyecto de investigación, descubrí que hay bastante otro complemento que proviene de los domadores:

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

y ese:

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

y aún el de Codehouse.


En una ligera tangente: hubo un problema con el uso de maven-jaxb2-plugin con Eclipse Indigo que publiqué here . Una corrección (extensión) ha estado disponible recientemente.

Esto no pretende estar en desacuerdo, en absoluto, con la recomendación de maven-jaxb2-plugin sobre maven2-jaxb-plugin. No lo sé, pero espero que maven2-jaxb-plugin tenga el mismo problema, probablemente sin resolver.


Recientemente probé los tres complementos mencionados anteriormente (incluidos aquí también):

  1. el plugin maven-jaxb2 ( http://maven-jaxb2-plugin.java.net/ )
  2. el plugin maven-jaxb ( maven-jaxb-plugin
  3. el jaxb2-maven-plugin ( http://mojo.codehaus.org/jaxb2-maven-plugin/ )

Terminé usando una cuarta opción: el complemento Maven de CXF XJC http://cxf.apache.org/cxf-xjc-plugin.html

Si me falta algo que quisiera saber, la configuración parecía más directa para lo que estaba tratando de hacer y más fácilmente me permitía ocuparme de la generación de clases duplicadas dentro del mismo espacio de nombres, similar a esta pregunta: ¿Hay algún problema? forma de tratar con las definiciones de elementos duplicados en varios archivos .xsd en JAXB? .

Ahora tengo control granular sobre cada XSD entrante y el correspondiente paquete de Java; Aquí hay una configuración de muestra cercana a la que estoy usando.

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


Soy el autor de maven-jaxb2-plugin .

El plugin maven-jaxb2 actualmente usa JAXB 2.1. En las próximas versiones también proporcionaremos las versiones JAXB 2.0 y JAXB 2.2.

En cuanto a la discusión de "qué plugin es mejor", verifique las características , decida usted mismo. Avíseme si pierde alguna funcionalidad.


Supongo que uno es para la especificación JAXB original y el codehaus es para la especificación JAXB 2.1 (y si dev.java.net cargara algo de tiempo este siglo, podría decirlo con certeza).


Vamos a resumir. Tenemos:

  1. el maven-jaxb2-plugin ( maven-jaxb2-plugin )
  2. el maven-jaxb-plugin ( maven-jaxb-plugin )
  3. el jaxb2-maven-plugin ( jaxb2-maven-plugin )

Basado en los comentarios de este hilo , siempre he usado el maven-jaxb2-plugin (es decir, el plugin n. ° 1):

Con respecto al org.jvnet.jaxb2.maven2: maven-jaxb2-plugin versus com.sun.tools.xjc.maven2: maven-jaxb-plugin, desde mi punto de vista es definitivamente el primero ( http://maven-jaxb2-plugin.java.net/ ).

Este complemento tiene muchas más características que com.sun.tools.xjc.maven2: maven-jaxb-plugin, el desarrollo está activo. Finalmente, soy uno de los autores :) y yo diría que nos mantenemos en contacto con los desarrolladores y usuarios de JAXB y reaccionamos a las últimas características / solicitudes.

Y, de hecho, el complemento # 2 no está muy activo (¿está muerto?). Y porque siempre he estado contento con el n. ° 1, nunca he usado el plugin n. ° 3, así que no puedo decir nada al respecto. Por si acaso, aquí hay una configuración funcional para el complemento n. ° 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>


  • maven-jaxb2-plugin utiliza la implementación de referencia JAXB por Oracle / Sun
  • cxf y jaxb2-maven-plugin usan Apache Xerces