13

Are you aware of any good JAXB Plugin which generated Builder pattern classes for the generated JAXB classes? Composing domain using JAXB generated classes is really nasty. I saw a plugin someone wrote back in 2010 but it doesn't use the newest maven plugin jaxb2-maven-plugin, and it also requires you to specify bindings for each schema type which is not robust.

4

2 回答 2

11

是的,现在有一个插件可以为 JAXB 生成的类生成流畅的构建器。有一个github项目

https://github.com/mklemm/jaxb2-rich-contract-plugin

它包含几个有用的 JAXB 插件。您可以从 github 下载源代码和二进制文件,或者从中央存储库获取 maven 工件

希望这可以帮助。如果你有任何问题,尽管问我,我是发起它的人。

于 2014-03-23T02:13:13.510 回答
5

以下来自pom.xml文件的片段,使用 mavencxf-xjc-plugin生成 JAXB 类,还利用jaxb-fluent-api附加流畅的接口......它们本身并不完全是一个完整的构建器模式......但我认为它们为人们留下了空间在这个方向上取得不错的进展。

        <!-- 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>
于 2013-12-12T23:47:00.353 回答