如何配置 jaxb/xjc 以仅生成一个类,而不是从更多 xsd-s 中导入的复杂类型中生成重复项?

tka*_*vin 5 java jaxb xjc cxf-xjc-plugin

假设我有 2 个 xsd-s。第一个声明类型 A。第二个导入第一个 xsd(导入命名空间、xmlns:ns=... 等)并声明类型 B,该类型扩展了类型 A (base="ns:B")。像这样:

<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:simpleType name="A">
        <xs:restriction base="xs:string" />
    </xs:simpleType>
</xs:schema>
Run Code Online (Sandbox Code Playgroud)
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:import schemaLocation=".\XSD1.xsd" />
    <xs:simpleType name="B">
        <xs:restriction base="A" />
    </xs:simpleType>
</xs:schema>
Run Code Online (Sandbox Code Playgroud)

我使用 cxf-xjc maven 插件进行代码生成,配置如下:

<plugin>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-xjc-plugin</artifactId>
    <version>${cxf.version}</version>
    <configuration>
        <extensions>
            <extension>org.apache.cxf.xjcplugins:cxf-xjc-dv:${cxf.version}</extension>
        </extensions>
    </configuration>
    <executions>
        <execution>
            <id>generate-sources</id>
            <phase>generate-sources</phase>
            <goals>
                <goal>xsdtojava</goal>
            </goals>
            <configuration>
                <xsdOptions>
                    <xsdOption>
                        <xsd>src/main/resources/XSD1.xsd</xsd>
                        <packagename>org.example</packagename>
                    </xsdOption>
                    <xsdOption>
                        <xsd>src/main/resources/XSD2.xsd</xsd>
                        <packagename>org.example.child</packagename>
                    </xsdOption>
                </xsdOptions>
            </configuration>
        </execution>
    </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

我想将父类和子类生成到单独的包中,但是这样 XJC将父类生成到我不想要的两个包中

是否可以告诉 JAXB/XJC 不要这样做,而只创建一个父类 (A) 并从子类 (B) 中的另一个包导入它?