是否有生成Builders的JAXB插件?

时间:2013-12-10 08:13:03

标签: java xml jaxb2 jaxb2-maven-plugin

您是否了解为生成的JAXB类生成Builder模式类的任何优秀JAXB插件?使用JAXB生成的类来编写域是非常讨厌的。 我看到有人在2010年写回了一个插件,但它没有使用最新的maven插件jaxb2-maven-plugin,而且还要求你为每个不健壮的模式类型指定绑定。

2 个答案:

答案 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>