Pregunta

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

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

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


Gracias Matt. En mi proyecto de investigación poco, he encontrado que hay bastante otro plugin que vienen de los Sunners:

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

y que uno:

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

y aún el de CodeHouse.

¿Fue útil?

Solución

Vamos a resumir. Tenemos:

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

Basándose en los comentarios de este hilo , siempre he utilizado el experto-jaxb2-plugin (es decir, el plugin # 1 ):

  

En cuanto a la   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 plugin 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   nos mantenemos en contacto con los desarrolladores JAXB   y los usuarios y reaccionan a los latests   Características / solicitudes.

Y, en efecto, el complemento de # 2 no es muy activa (muertos?). Y porque siempre he sido feliz con # 1, nunca he utilizado complemento # 3 así que no puedo decir nada al respecto. Por si acaso, aquí hay una configuración de trabajo para el plug-in # 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>

Otros consejos

He intentado recientemente los tres plug-ins mencionados anteriormente (incluido aquí también):

  1. el maven-jaxb2-plugin ( http://maven-jaxb2-plugin.java.net/ )
  2. el maven-jaxb-plugin ( https://jaxb.dev.java. / jaxb-maven2-plug-in net /)
  3. el jaxb2-experto-plugin ( http://mojo.codehaus.org/jaxb2- Maven-plugin / )

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

Si me falta algo que me gustaría saber, pero la configuración parecido más sencillo para lo que estaba tratando de hacer y más fácilmente me permitió que lidiar con la generación de la clase duplicado dentro del mismo espacio de nombres - similar a esta pregunta: ¿hay una manera de lidiar con 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í es un ejemplo de configuración cerca de 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>

Yo soy el autor de experto-jaxb2-plugin .

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

En cuanto a "plug-in, que es mejor" discusión, comprobar las características , deciden mismo . Déjame saber si se olvida de algunas funciones.

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

En un ligero tangente: hubo un problema con el uso de Maven-jaxb2-plugin con Eclipse Indigo que he publicado aquí . Una solución (extensión) se ha convertido recientemente disponible.

Esto no quiere decir no estar de acuerdo, en absoluto, con la recomendación del experto-jaxb2-plugin sobre maven2-jaxb-plugin. No sé, pero espero que maven2-jaxb-plugin tiene el mismo problema, probablemente no resuelto.

Me imagino que uno es para la especificación original JAXB y la Codehaus uno es para la especificación JAXB 2.1 (y si el dev.java.net cargaría algún momento de este siglo, me gustaría ser capaz de decir con seguridad) .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top