[英]Difference of Maven JAXB plugins
我已经确定存在用于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>
还有那个:
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
仍然是 Codehouse 的那个。
让我们总结一下。 我们曾经/曾经:
根据该线程的评论,我一直使用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>
我最近尝试了上面提到的三个插件(也包括在这里):
我最终使用了第四个选项: CXF XJC Maven 插件http://cxf.apache.org/cxf-xjc-plugin.html
如果我遗漏了一些我想知道的东西,但是对于我想要做的事情,配置似乎更简单,并且更容易让我在同一个命名空间中处理重复的类生成——类似于这个问题: Is there a在 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>
maven-jaxb2-plugin 当前使用 JAXB 2.1。 在下一个版本中,我们还将提供 JAXB 2.0 和 JAXB 2.2 版本。
至于“哪个插件更好”的讨论,请检查功能,自己决定。 如果您错过了某些功能,请告诉我。
我猜想一个是针对原始 JAXB 规范的,而 codehaus 一个是针对 JAXB 2.1 规范的(如果 dev.java.net 会在本世纪某个时候加载,我可以肯定地说)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.