您是否了解为生成的JAXB类生成Builder模式类的任何优秀JAXB插件?使用JAXB生成的类来编写域是非常讨厌的。 我看到有人在2010年写回了一个插件,但它没有使用最新的maven插件jaxb2-maven-plugin,而且还要求你为每个不健壮的模式类型指定绑定。
答案 0 :(得分:8)
是的,现在有一个插件可以为JAXB生成的类生成流畅的构建器。
上有一个github项目https://github.com/mklemm/jaxb2-rich-contract-plugin
它包含一些有用的JAXB插件。 你可以从github下载源码和二进制文件, 或者从The Central Repository
获取maven工件希望这会有所帮助。如果您有任何疑问,请问我,我就是那个开始它的人。
答案 1 :(得分:3)
pom.xml
文件中的以下代码段,使用maven cxf-xjc-plugin
生成JAXB类,并利用jaxb-fluent-api
来修复fluent interfaces ...这些不是'完全是一个完整的建设者模式...但我认为他们为人们留出了朝这个方向取得良好进展的空间。
<!-- Used to generate source code based on XSD (schema) file -->
<!-- http://cxf.apache.org/cxf-xjc-plugin.html -->
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-xjc-plugin</artifactId>
<version>2.7.7</version>
<configuration>
<extensions>
<extension>net.java.dev.jaxb2-commons:jaxb-fluent-api:2.1.8</extension>
</extensions>
</configuration>
<executions>
<execution>
<id>generate-xsd-sources</id>
<phase>generate-sources</phase>
<goals>
<goal>xsdtojava</goal>
</goals>
<configuration>
<sourceRoot>${basedir}/target/generated-sources/cxf-xjc/</sourceRoot>
<xsdOptions>
<xsdOption>
<xsd>${basedir}/src/main/wsdl/your.xsd</xsd>
<packagename>com.your.package.name</packagename>
<extensionArgs>
<extensionArg>-Xfluent-api</extensionArg>
</extensionArgs>
</xsdOption>
</xsdOptions>
</configuration>
</execution>
</executions>
</plugin>