Разница плагинов Maven JAXB
Я определил, что два JAXB Плагины Maven 2 существуют, с некоторыми различными конфигурациями.
один из Солнца:http://jaxb.dev.java.net/jaxb-maven2-plugin/, другой из Mojohaus:http://mojohaus.org/jaxb2-maven-plugin/
какой из этих двух плагинов можно рекомендовать?
Спасибо Мэтт. В моем маленьком исследовательском проекте я обнаружил, что есть совсем другой плагин исходящий от саннеров:
<groupId>com.sun.tools.xjc.maven2</groupId>
<artifactId>maven-jaxb-plugin</artifactId>
и еще:
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
и еще один из Codehouse.
6 ответов:
подведем итоги. У нас есть:
- the в Maven-jaxb2-plugin и (https://github.com/highsource/maven-jaxb2-plugin)
- the Maven-jaxb-plugin (https://jaxb.dev.java.net/jaxb-maven2-plugin/)
- the jaxb2-maven-plugin (https://github.com/mojohaus/jaxb2-maven-plugin)
на основе комментариев этой теме, Я всегда использовал в Maven-jaxb2-plugin и (т. е. плагин #1):
о орг.jvnet.jaxb2.maven2:maven-jaxb2-плагин против com.солнце.инструменты.xjc.maven2:maven-jaxb-плагин, с моей точки зрения это наверняка первый (http://maven-jaxb2-plugin.java.net/).
этот плагин имеет гораздо больше возможностей чем com.солнце.инструменты.xjc.maven2:maven-jaxb-плагин, разработка ведется активно. В конечном счете, Я один из авторов :) и я бы сказал мы поддерживаем связь с разработчиками JAXB а пользователи так и реагируют на последние сообщения особенности / запросы.
и действительно, плагин #2 не очень активный (умер?). И поскольку я всегда был доволен #1, я никогда не использовал плагин #3, поэтому ничего не могу сказать об этом. На всякий случай, вот рабочая конфигурация для плагинов #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>
Я недавно попробовал три плагина, упомянутых выше (включены здесь также):
- плагин maven-jaxb2 (http://maven-jaxb2-plugin.java.net/)
- плагин maven-jaxb (https://jaxb.dev.java.net/jaxb-maven2-plugin/)
- плагин jaxb2-maven (http://mojo.codehaus.org/jaxb2-maven-plugin/)
в итоге я использовал четвертый вариант:CXF XJC Maven Плагинhttp://cxf.apache.org/cxf-xjc-plugin.html
Если я упускаю что-то, что я хотел бы знать, но конфигурация казалась более простой для того, что я пытался сделать, и более легко позволяла мне иметь дело с созданием дубликатов классов в одном и том же пространстве имен-аналогично этому вопросу: есть ли способ справиться с повторяющимися определениями элементов через несколько .xsd файлы в JAXB?.
теперь у меня есть гранулированный контроль над каждым входящим XSD и соответствующим пакетом java; вот пример конфигурации, близкой к той, которую я использую.
<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>
Я автор в Maven-jaxb2-plugin и.
Maven-jaxb2-плагин в настоящее время использует JAXB 2.1. В следующих версиях мы также предоставим версии JAXB 2.0 и JAXB 2.2.
Что касается обсуждения "какой плагин лучше",проверить функции, решайте сами. Дайте мне знать, если вы пропустите некоторые функции.
- Maven-jaxb2-плагин использует эталонную реализацию JAXB от Oracle / Sun
- cxf и jaxb2-Maven-плагин используют Apache Xerces
по незначительной касательной: возникла проблема с использованием Maven-jaxb2-плагина с Eclipse Indigo, который я разместил здесь. Недавно стало доступно исправление (расширение).
Это вовсе не означает, что вы не согласны с рекомендацией Maven-jaxb2-plugin над maven2-jaxb-plugin. Я не знаю, но я ожидаю, что maven2-jaxb-плагин имеет ту же проблему, вероятно, нерешенную.
Я бы предположил, что один из них предназначен для исходной спецификации JAXB, а codehaus - для спецификации JAXB 2.1 (и если dev.java.net загрузил бы какое-то время в этом веке, я бы точно мог сказать).
Comments