Unterschied von Maven JAXB Plugins
-
19-09-2019 - |
Frage
Ich habe festgestellt, dass zwei JAXB Plugins für Maven 2 exist, mit einigen verschiedenen Konfigurationen.
Der eine von Sun ist: http://jaxb.dev.java.net / jaxb-maven2-Plugin / , die andere von Mojohaus: http://mojohaus.org / jaxb2-maven-Plugin /
Welche dieser beiden Plugins empfohlen werden kann?
Danke Matt. Auf meinem kleines Forschungsprojekt, fand ich, dass es eine ganz andere Plugin von dem Sunners comming:
<groupId>com.sun.tools.xjc.maven2</groupId>
<artifactId>maven-jaxb-plugin</artifactId>
und dass man:
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
und immer noch der von Codehouse.
Lösung
Fassen wir zusammen. Wir haben:
- Maven-jaxb2-Plugin ( https://github.com/highsource/maven-jaxb2-plugin )
- Maven-jaxb-Plugin ( https://jaxb.dev.java.net/jaxb-maven2-plugin/ )
- jaxb2-maven-plugin ( https://github.com/mojohaus/jaxb2-maven-plugin )
Basierend auf den Kommentaren des diesen Thread , habe ich das immer verwendet maven-jaxb2-Plugin (dh Plugin # 1 ):
In Bezug auf die org.jvnet.jaxb2.maven2: maven-jaxb2-Plugin gegen com.sun.tools.xjc.maven2: maven-jaxb-Plugin, es ist auf jeden Fall aus meiner Sicht der erste ( http://maven-jaxb2-plugin.java.net/ ).
Dieses Plugin hat viel mehr Funktionen als com.sun.tools.xjc.maven2: maven-jaxb-Plugin, die Entwicklung aktiv ist. Endlich, Ich bin einer der Autoren :) und ich würde sagen, wir halten Sie in Kontakt mit JAXB Entwickler und Benutzer und reagieren auf die latests Funktionen / Anfragen.
Und in der Tat ist das Plugin # 2 nicht sehr aktiv (tot?). Und weil ich immer mit # 1 glücklich war, habe ich noch nie 3 Plugin # verwendet, so kann wirklich nichts darüber sagen. Nur für den Fall, hier ist eine funktionierende Konfiguration für 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>
Andere Tipps
Ich habe die drei Plug-In vor kurzem versucht, oben erwähnte (inbegriffen auch hier):
- Maven-jaxb2-Plugin ( http://maven-jaxb2-plugin.java.net/ )
- Maven-jaxb-Plugin ( https://jaxb.dev.java. net / jaxb-maven2-Plugin /)
- die jaxb2-maven-Plugin ( http://mojo.codehaus.org/jaxb2- maven-Plugin / )
ich am Ende eine vierte Option: Das CXF XJC Maven Plugin gibt es eine Möglichkeit mit doppelten Elementdefinitionen über mehrere XSD-Dateien in JAXB umgehen? .
Ich habe jetzt granulare Kontrolle über jede eingehende XSD und Java-Paket entspricht; Hier ist eine Beispielkonfiguration der unmittelbaren Nähe einer verwende ich.
<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>
Ich bin der Autor des Maven-jaxb2-Plugin .
Maven-jaxb2-Plugin verwendet derzeit JAXB 2.1. In den nächsten Versionen werden wir auch JAXB 2.0 und JAXB 2.2 Versionen.
Wie bei „dem Plugin ist besser“ Diskussion, überprüfen die Eigenschaften , entscheiden sich . Lassen Sie uns wissen, wenn Sie einige Funktionen vermissen.
- maven-jaxb2-Plugin verwendet die JAXB Referenz-Implementierung von Oracle / Sun
- cxf und jaxb2-maven-Plugin Apache Xerces
Auf einer leichten Tangente: Es gab ein Problem bei der Verwendung von maven-jaxb2-Plugin mit Eclipse Indigo, dass ich geschrieben hier . Ein Fix (Erweiterung) ist seit kurzem verfügbar.
Dies ist nicht zu widersprechen, überhaupt, mit der Empfehlung von maven-jaxb2-Plugin über maven2-jaxb-Plugin gemeint. Ich weiß nicht, aber ich erwarte, dass maven2-jaxb-Plugin hat das gleiche Problem, wahrscheinlich ungelöst.
Ich würde vermuten, dass man für die ursprüngliche JAXB Spezifikation und der Codehaus ist für die JAXB 2.1-Spezifikation (und wenn die dev.java.net einige Zeit in diesem Jahrhundert laden würde, würde ich in der Lage sein, um sicher zu sagen) .