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.

War es hilfreich?

Lösung

Fassen wir zusammen. Wir haben:

  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 )

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

  1. Maven-jaxb2-Plugin ( http://maven-jaxb2-plugin.java.net/ )
  2. Maven-jaxb-Plugin ( https://jaxb.dev.java. net / jaxb-maven2-Plugin /)
  3. 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) .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top