Differenza dei plugin Maven JAXB

Ho determinato che esistono due plugin JAXB per Maven 2, con alcune configurazioni differenti.

Quello di Sun: http://jaxb.dev.java.net/jaxb-maven2-plugin/ , l’altro di Mojohaus: http://mojohaus.org/jaxb2-maven-plugin/

Quale di questi due plugin può essere raccomandato?


Grazie Matt. Nel mio piccolo progetto di ricerca, ho scoperto che c’è un altro plugin proveniente dai sunners:

com.sun.tools.xjc.maven2 maven-jaxb-plugin 

e quello:

 org.jvnet.jaxb2.maven2 maven-jaxb2-plugin 

e ancora quello di Codehouse.

Riassumiamo. Abbiamo:

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

Sulla base dei commenti di questa discussione , ho sempre utilizzato il plugin maven-jaxb2 (ovvero il plugin n. 1):

Per quanto riguarda org.jvnet.jaxb2.maven2: maven-jaxb2-plugin versus 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 molte più funzionalità di com.sun.tools.xjc.maven2: maven-jaxb-plugin, lo sviluppo è attivo. Infine, sono uno degli autori 🙂 e direi che restiamo in contatto con gli sviluppatori e gli utenti di JAXB e reagiamo alle funzionalità / richieste latest.

E infatti, il plugin n. 2 non è molto attivo (morto?). E poiché sono sempre stato soddisfatto del numero 1, non ho mai usato il plugin n. 3, quindi non posso dire nulla al riguardo. Nel caso, ecco una configurazione funzionante per il plugin n. 1:

  ...    true org.apache.maven.plugins maven-compiler-plugin  1.5 1.5    org.jvnet.jaxb2.maven2 maven-jaxb2-plugin    generate        

Recentemente ho provato i tre plug-in citati sopra (anche qui inclusi):

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

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

Se mi manca qualcosa mi piacerebbe sapere, ma la configurazione sembrava più semplice per quello che stavo cercando di fare e mi permetteva più facilmente di occuparmi di generazione di classi duplicate all’interno dello stesso spazio dei nomi – simile a questa domanda: C’è un modo di gestire definizioni di elementi duplicati su più file .xsd in JAXB? .

Ora ho un controllo granulare su ogni XSD in arrivo e sul pacchetto java corrispondente; ecco una configurazione di esempio vicina a quella che sto usando.

   org.apache.cxf cxf-xjc-plugin 2.3.0   org.apache.cxf.xjcplugins:cxf-xjc-dv:2.3.0     generate-sources generate-sources  xsdtojava   ${basedir}/target/generated-sources/src/main/java   src/main/resources/schema/commands.xsd  com.foo.bar.commands   src/main/resources/schema/responses.xsd com.foo.bar.responses       

Sono l’autore di maven-jaxb2-plugin .

Il plugin maven-jaxb2 attualmente utilizza JAXB 2.1. Nelle prossime versioni forniremo anche le versioni JAXB 2.0 e JAXB 2.2.

Per quanto riguarda la discussione “quale plugin è meglio”, controlla le funzionalità , decidi tu. Fammi sapere se ti manca qualche funzionalità.

  • maven-jaxb2-plugin usa l’implementazione di riferimento JAXB da Oracle / Sun
  • cxf e jaxb2-maven-plugin usano Apache Xerces

Su una leggera tangente: c’è stato un problema con l’uso di maven-jaxb2-plugin con Eclipse Indigo che ho postato qui . Una correzione (estensione) è diventata di recente disponibile.

Questo non significa in alcun modo essere in disaccordo con la raccomandazione del plugin maven-jaxb2 su maven2-jaxb-plugin. Non lo so, ma mi aspetto che maven2-jaxb-plugin abbia lo stesso problema, probabilmente irrisolto.

Direi che uno è per la specifica JAXB originale e quella per il codehaus è per la specifica JAXB 2.1 (e se il dev.java.net potrebbe caricare un po ‘di tempo in questo secolo, sarei in grado di dire con certezza).