Domanda

ho stabilito che due JAXB plugin per Maven 2 esistono, con alcune configurazioni differenti.

L'uno è da sole: http://jaxb.dev.java.net / JAXB-maven2-plugin / , l'altro da Mojohaus: http://mojohaus.org / jaxb2-maven-plugin /

Quale di questi due plugin può essere raccomandato?


Grazie Matt. Sul mio piccolo progetto di ricerca, ho scoperto che c'è abbastanza un altro plugin ritornassi dai sunners:

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

e che uno:

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

e ancora quello da Codehouse.

È stato utile?

Soluzione

Riassumiamo. Abbiamo:

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

Sulla base delle osservazioni di questa discussione , ho sempre usato il Maven-jaxb2-plugin (cioè plug # 1 ):

  

Per quanto riguarda la   org.jvnet.jaxb2.maven2: Maven-jaxb2-plugin   contro   com.sun.tools.xjc.maven2: Maven-JAXB-plugin,   dal mio punto di vista è sicuramente   il primo   ( http://maven-jaxb2-plugin.java.net/ ).

     

Questo plugin ha caratteristiche molto di più   di   com.sun.tools.xjc.maven2: Maven-JAXB-plugin,   lo sviluppo è attivo. Finalmente,   Sono uno degli autori :) e direi   ci teniamo in contatto con gli sviluppatori JAXB   e gli utenti e reagiscono alle latests   Caratteristiche / richieste.

E in effetti, il plugin # 2 non è molto attivo (morto?). E poiché sono sempre stato felice con # 1, non ho mai usato plug # 3 quindi non posso dire nulla su di esso. Solo nel caso, qui è una configurazione di lavoro per il 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>

Altri suggerimenti

Recentemente ho provato le tre plug-in di cui sopra (incluso anche qui):

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

Ho finito per usare una quarta opzione: Il CXF XJC Maven Plugin http://cxf.apache.org/cxf-xjc-plugin.html

Se mi manca qualcosa Vorrei sapere, ma la configurazione sembrava più semplice per quello che stavo cercando di fare e più facilmente mi ha permesso di trattare con la generazione di classe duplicato all'interno dello stesso spazio dei nomi - simile a questa domanda: c'è un modo per trattare con definizioni degli elementi duplicati in più file .xsd in JAXB? .

Ora ho controllo granulare su ogni XSD entrata e corrispondente pacchetto java; ecco un esempio di configurazione vicina a quella che sto 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>

Io sono l'autore di Maven-jaxb2-plugin .

Il Maven-jaxb2-plugin utilizza attualmente JAXB 2.1. Nelle prossime versioni ci sarà anche fornire JAXB 2.0 e JAXB 2.2 versioni.

Per quanto riguarda "il quale plug-in è meglio" discussione, verificare le caratteristiche , decidono da soli . Fatemi sapere se si perde alcune funzionalità.

  • Maven-jaxb2-plugin utilizza l'implementazione di riferimento JAXB da Oracle / Sun
  • CXF e jaxb2-maven-plugin utilizzano Apache Xerces

Su un lieve tangente: c'era un problema con l'utilizzo di Maven-jaxb2-plugin con Eclipse Indigo che ho postato qui . Una correzione (estensione) è recentemente diventato disponibile.

Questa non è destinato a non essere d'accordo, a tutti, con la raccomandazione di Maven-jaxb2-plugin over maven2-JAXB-plugin. Non lo so, ma mi aspetto che maven2-JAXB-plugin ha lo stesso problema, probabilmente irrisolto.

Direi che uno è per la specifica originale JAXB e Codehaus uno è per la specifica JAXB 2.1 (e, se il dev.java.net caricherebbe po 'di tempo in questo secolo, sarei in grado di dire con certezza) .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top