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. 6 answers
Podsumujmy. Mamy:
- 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 )
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>
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):
- maven-jaxb2-plugin ( http://maven-jaxb2-plugin.java.net/)
- wtyczka maven-jaxb ( https://jaxb.dev.java.net/jaxb-maven2-plugin/)
- 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>
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ść.
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
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.
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).
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