代码之家  ›  专栏  ›  技术社区  ›  cuh

Maven JAXB插件的区别

  •  121
  • cuh  · 技术社区  · 14 年前

    我已经决定两个 JAXB 的插件 Maven 2存在,具有一些不同的配置。

    一个来自太阳: http://jaxb.dev.java.net/jaxb-maven2-plugin/ 另一个来自莫约豪斯: http://mojohaus.org/jaxb2-maven-plugin/

    这两个插件中哪一个可以推荐?


    谢谢Matt。在我的小研究项目中,我发现Sunners还有另外一个插件:

    <groupId>com.sun.tools.xjc.maven2</groupId>  
    <artifactId>maven-jaxb-plugin</artifactId>  
    

    那一个:

    <groupId>org.jvnet.jaxb2.maven2</groupId>
    <artifactId>maven-jaxb2-plugin</artifactId>
    

    还有一个来自代码室的。

    6 回复  |  直到 14 年前
        1
  •  100
  •   approxiblue Ben Jackson    9 年前

    让我们总结一下。我们有:

    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 )

    根据 this thread ,我一直使用 maven-jaxb2-插件 (即插件1):

    关于 org.jvnet.jaxb2.maven2:maven-jaxb2-plugin 对战 com.sun.tools.xjc.maven2:maven jaxb插件, 从我的角度来看,这绝对是 第一个 ( http://maven-jaxb2-plugin.java.net/ )

    这个插件有更多的功能 比 com.sun.tools.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>
    
        2
  •  43
  •   Community basarat    7 年前

    我最近尝试了上面提到的三个插件(也包括在这里):

    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

    如果我遗漏了一些我想知道的东西,但是配置看起来更简单,我想做的事情也更容易处理同一命名空间中的重复类生成——类似于这个问题: Is there a way to deal with duplicate element definitions across multiple .xsd files in 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>
    
        3
  •  20
  •   Bart Tomer W    12 年前

    我是的作者 maven-jaxb2-plugin .

    maven-jaxb2-plugin目前使用的是jaxb2.1。在下一个版本中,我们还将提供JAXB2.0和JAXB2.2版本。

    关于“哪个插件更好”的讨论, check the features 决定你自己。如果您错过了某些功能,请通知我。

        4
  •  3
  •   rds    12 年前
    • maven-jaxb2-plugin使用Oracle/Sun的JAXB引用实现
    • cxf和jaxb2 maven插件使用Apache Xerces
        5
  •  2
  •   Community basarat    7 年前

    有一点相切:在我发布的EclipseIndigo中使用maven-jaxb2-plugin有一个问题 here . 修复(扩展)最近已可用。

    这并不意味着不同意maven-jaxb2-plugin对maven2-jaxb plugin的建议。我不知道,但是我希望Maven2 JAXB插件也有同样的问题,可能还没有解决。

        6
  •  0
  •   matt b    14 年前

    我猜一个是针对原始的JAXB规范,而codehaus一个是针对JAXB 2.1规范(如果dev.java.net在本世纪加载一段时间,我可以肯定地说)。