JAXB::xjc 2.2无法识别简单类型的绑定

JAXB::xjc 2.2无法识别简单类型的绑定,jaxb,xjc,Jaxb,Xjc,我有一堆xsd模式,其中一些导入其他模式。因此,每当我在导入其他xsd文件的某些xsd文件上调用(Ant任务或命令行工具)时,我都会传递一个绑定文件,以确保不会再次生成导入的类(因为它们已经为“upstread”模式生成)。此解决方案如中所述 虽然这种方法确实适用于xsd:complexType类型,但它似乎不适用于xsd:simpleType类型。下面是一个缩小的示例来演示这一点。假设我们有两个死的简单模式,一个导入另一个: a.xsd ---import--> b.xsd 档案

我有一堆xsd模式,其中一些导入其他模式。因此,每当我在导入其他xsd文件的某些xsd文件上调用(Ant任务或命令行工具)时,我都会传递一个绑定文件,以确保不会再次生成导入的类(因为它们已经为“upstread”模式生成)。此解决方案如中所述

虽然这种方法确实适用于xsd:complexType类型,但它似乎不适用于xsd:simpleType类型。下面是一个缩小的示例来演示这一点。假设我们有两个死的简单模式,一个导入另一个:

a.xsd   ---import-->  b.xsd
档案包括:

a、 xsd 你会得到:

output/
└── example
    └── a
        ├── ObjectFactory.java
        ├── ResourceType2.java
        └── ResourceType.java
因此,为导入的模式生成了文件。由于我们不希望这样,我们定义了以下要传递的绑定文件:

导入的-bindings.xml 我们在输出目录中看到以下内容:

output/
└── example
    └── a
        ├── ObjectFactory.java
        └── ResourceType.java
也就是说,xsd:complexType“ResourceType2”的生成确实被抑制了,但是xjc继续为导入的xsd:simpleType“ResourceType”生成了代码。有什么想法吗

更新
除了使用自动生成的插曲文件的变通方法外,我还没有实现这一点。JAXB 2.2.x版本只支持我的猜测。

JAXB 2.2.x版本只支持我的猜测。

对我来说效果不错。我干得不错。
xjc -d output -p example.a -npa a.xsd 
output/
└── example
    └── a
        ├── ObjectFactory.java
        ├── ResourceType2.java
        └── ResourceType.java
<jxb:bindings 
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
    version="2.1">

    <jxb:bindings schemaLocation="b.xsd">
        <jxb:bindings node="//xs:simpleType[@name='ResourceType']">
            <jxb:class ref="example.b.ResourceType"/>
        </jxb:bindings>
        <jxb:bindings node="//xs:complexType[@name='ResourceType2']">
            <jxb:class ref="example.b.ResourceType2"/>
        </jxb:bindings>
    </jxb:bindings>
</jxb:bindings>
xjc -d output -p a.example a.xsd -b imported-bindings.xml 
output/
└── example
    └── a
        ├── ObjectFactory.java
        └── ResourceType.java