JAXB XJC 抑制 ObjectFactory 并生成 jaxb.index

JAXB XJC Suppress ObjectFactory & Generate jaxb.index

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

我的理解是 jaxb.index 在对象序列化和反序列化方面比 ObjectFactory 更优化。

我正在使用 Ant 1.10.3 & JAXB 2.3.0

谢谢。

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

现在,假设您知道自己做什么,如何去做。

JAXB2 Basics 包括一个生成 jaxb.index 的 "JAXB Index" 插件。 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。