JAXB XJC抑制ObjectFactory&生成jaxb.in​​dex

时间:2018-04-18 20:08:20

标签: java ant jaxb xjc

我的项目中有大量使用SELECT ant任务生成的生成类。默认情况下,生成过程会创建xjc类。我想知道是否有办法抑制ObjectFactory的创建,而是生成ObjectFactory.java文件。

我的理解是jaxb.in​​dex比ObjectFactory更适合于对象序列化&反序列化。

我正在使用 Ant 1.10.3 & JAXB 2.3.0

感谢。

1 个答案:

答案 0 :(得分:1)

首先警告:确保你知道你做了什么。 ObjectFactory有一些jaxb.index没有的功能(如支持替换组)。因此,抑制ObjectFactory可能导致无法解析有效的XML。

现在,假设你知道你做了什么,怎么做。

JAXB2 Basics包含一个生成jaxb.index的“JAXB索引”插件。 Ant中的用法类似于:

    <xjc destdir="${basedir}/target/generated-sources/xjc" extension="true">
        <arg line="
            -Xjaxbindex"/>
        <binding dir="${basedir}/src/main/resources">
            <include name="**/*.xjb"/>
        </binding>
        <schema dir="${basedir}/src/main/resources">
            <include name="**/*.xsd"/>
        </schema>
        <!-- Plugins -->
        <classpath>
            <fileset dir="${basedir}/lib">
                <!-- JAXB2 Basics library -->
                <include name="jaxb2-basics-plugins-*.jar"/>
            </fileset>
        </classpath>
    </xjc>

要取消ObjectFactory,只需删除生成的文件。

免责声明:我是JAXB2-Basics的作者。我不确定它是否适用于JAXB 2.3.0。