Różnica wtyczek Maven JAXB

Ustaliłem, że istnieją dwie JAXB wtyczki do Maven 2, z kilkoma różnymi konfiguracjami.

Ten jest od Słońca: http://jaxb.dev.java.net/jaxb-maven2-plugin / , drugi z Mojohaus: http://mojohaus.org/jaxb2-maven-plugin/

Która z tych dwóch wtyczek może być zalecana?


Dzięki Matt. W moim małym projekcie badawczym odkryłem, że jest całkiem inny plugin pochodzący od sunnerów:
<groupId>com.sun.tools.xjc.maven2</groupId>  
<artifactId>maven-jaxb-plugin</artifactId>  

Oraz Ten:

<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
I nadal ten z Codehouse.
Author: Efthymis, 2010-03-12

6 answers

Podsumujmy. Mamy:

  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 )

Na podstawie komentarzy tego wątku , zawsze używałem maven-jaxb2-plugin (czyli plugin #1):

Dotyczące org.jvnet.jaxb2maven2: Maven-jaxb2-plugin versus com.słońce.narzędzia.xjc.maven2: Maven-JAXB-plugin, z mojego punktu widzenia to zdecydowanie pierwszy ( http://maven-jaxb2-plugin.java.net/).

Ta wtyczka ma znacznie więcej funkcji niż com.słońce.narzędzia.xjc.maven2: Maven-JAXB-plugin, rozwój jest aktywny. Wreszcie, Jestem jednym z autorów :) i powiedziałbym jesteśmy w kontakcie z programistami JAXB i użytkowników oraz reagują na najnowsze funkcje / prośby.

I rzeczywiście, plugin # 2 nie jest bardzo aktywny (martwy?). A ponieważ zawsze byłem zadowolony z #1, nigdy nie używałem plugin #3, więc nie mogę naprawdę nic o tym powiedzieć. Na wszelki wypadek, oto działająca konfiguracja wtyczki #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>
 97
Author: Pascal Thivent,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-16 20:26:39

Ostatnio wypróbowałem trzy wtyczki wymienione powyżej (zawarte również tutaj):

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

W końcu skorzystałem z czwartej opcji: wtyczka CXF Xjc Maven http://cxf.apache.org/cxf-xjc-plugin.html

Jeśli brakuje mi czegoś, co chciałbym wiedzieć, ale konfiguracja wydawała się prostsza dla tego, co próbowałem zrobić i łatwiej pozwoliła mi poradzić sobie z generowaniem duplikatów klas w tej samej przestrzeni nazw -- podobnie do tego pytania: czy istnieje sposób na radzenie sobie z duplikatami definicji elementów w wielu .pliki xsd w JAXB?.

Mam teraz szczegółową kontrolę nad każdym nadchodzącym XSD i odpowiedni pakiet java; oto przykładowa konfiguracja zbliżona do tej, której używam.

 <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>
 39
Author: bn.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:25:57

Jestem autorem maven-jaxb2-plugin.

Maven-jaxb2-plugin obecnie używa JAXB 2.1. W kolejnych wersjach udostępnimy również wersje JAXB 2.0 i JAXB 2.2.

Jeśli chodzi o dyskusję "która wtyczka jest lepsza", Sprawdź funkcje , sam zdecyduj. Daj mi znać, jeśli przegapisz jakąś funkcjonalność.

 20
Author: lexicore,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-06-03 13:38:53
  • maven-jaxb2-plugin wykorzystuje implementację referencyjną JAXB przez Oracle / Sun
  • cxf i jaxb2-maven-plugin używają Apache Xerces
 3
Author: rds,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-16 11:59:16

Na drobną styczność: wystąpił problem z użyciem maven-jaxb2-plugin z Eclipse Indigo, który zamieściłem tutaj . Ostatnio stała się dostępna poprawka (rozszerzenie).

Nie ma to na celu nie zgadzać się w ogóle z zaleceniem maven-jaxb2-plugin nad maven2-JAXB-plugin. Nie wiem, ale spodziewam się, że maven2-JAXB-plugin ma ten sam problem, prawdopodobnie nierozwiązany.

 2
Author: Ed Staub,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:17:50

Domyślam się, że jeden jest dla oryginalnej specyfikacji JAXB, a kod jest dla specyfikacji JAXB 2.1 (a jeśli dev.java.net ładowałby się jakiś czas w tym stuleciu, byłbym w stanie powiedzieć na pewno).

 0
Author: matt b,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-12 13:09:51