Maven JAXB插件的区别

cuh*_*cuh 123 java maven-2 jaxb maven-plugin maven

我已经确定存在两个用于Maven 2的JAXB插件,具有一些不同的配置.

一个来自Sun:http://jaxb.dev.java.net/jaxb-maven2-plugin/,另一个来自Mojohaus:http://mojohaus.org/jaxb2-maven-plugin/

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


谢谢马特.在我的小型研究项目中,我发现还有另一个来自sunners的插件:

<groupId>com.sun.tools.xjc.maven2</groupId>  
<artifactId>maven-jaxb-plugin</artifactId>  
Run Code Online (Sandbox Code Playgroud)

那一个:

<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
Run Code Online (Sandbox Code Playgroud)

仍然是Codehouse的那个.

Pas*_*ent 101

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

  1. 行家-JAXB2-插件(https://github.com/highsource/maven-jaxb2-plugin)
  2. 行家-JAXB的插件(https://jaxb.dev.java.net/jaxb-maven2-plugin/)
  3. 所述JAXB2-行家-插件(https://github.com/mojohaus/jaxb2-maven-plugin)

根据这个帖子的评论,我总是使用maven-jaxb2-plugin(即插件#1):

关于org.jvnet.jaxb2.maven2:maven-jaxb2-plugin与com.sun.tools.xjc.maven2:maven-jaxb-plugin,从我的观点来看,它绝对是第一个(http:// maven-jaxb2) -plugin.java.net/).

这个插件比com.sun.tools.xjc.maven2:maven-jaxb-plugin具有更多的功能,开发是活跃的.最后,我是作者之一:)我会说我们会与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>
Run Code Online (Sandbox Code Playgroud)

  • @Gregor`maven-jaxb2-plugin`现在托管在[GitHub]上(https://github.com/highsource/maven-jaxb2-plugin).文档位于[wiki](https://github.com/highsource/maven-jaxb2-plugin/wiki). (2认同)

bn.*_*bn. 44

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

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

我最终使用了第四个选项:CXF XJC Maven插件 http://cxf.apache.org/cxf-xjc-plugin.html

如果我遗漏了一些我想知道的东西,但配置似乎对我试图做的更直接,更容易让我在同一命名空间内处理重复的类生成 - 类似于这个问题:是否有在JAXB中处理多个.xsd文件中的重复元素定义的方法?.

我现在可以精确控制每个传入的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>
Run Code Online (Sandbox Code Playgroud)


lex*_*ore 20

我是maven-jaxb2-plugin的作者.

maven-jaxb2-plugin目前使用JAXB 2.1.在下一个版本中,我们还将提供JAXB 2.0和JAXB 2.2版本.

至于"哪个插件更好"讨论,检查功能,自己决定.如果你错过了一些功能,请告诉我.

  • @lanoxx不,不是.通常不建议从URL编译模式.制作模式的本地副本并使用目录文件重写链接. (3认同)
  • 实际站点:https://github.com/highsource/maven-jaxb2-plugin (2认同)

rds*_*rds 5

  • maven-jaxb2-plugin 使用 Oracle/Sun 的 JAXB 参考实现
  • cxf 和 jaxb2-maven-plugin 使用 Apache Xerces