Разница плагинов 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.

754   6  

6 ответов:

подведем итоги. У нас есть:

  1. the в Maven-jaxb2-plugin и (https://github.com/highsource/maven-jaxb2-plugin)
  2. the Maven-jaxb-plugin (https://jaxb.dev.java.net/jaxb-maven2-plugin/)
  3. 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>

Я недавно попробовал три плагина, упомянутых выше (включены здесь также):

  1. плагин maven-jaxb2 (http://maven-jaxb2-plugin.java.net/)
  2. плагин maven-jaxb (https://jaxb.dev.java.net/jaxb-maven2-plugin/)
  3. плагин 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

    Ничего не найдено.