我试图从几个特定的 XSD 中生成 Java 类, 包括 < code> xjc code > 。 这些图案有一些共同的定义, 所以它们导入了一些共同的 XSD 类。 特别是, 它们可以包含从零到所有共同的 XSD 类 。
我喜欢从特定的 XSD 到特定的软件包中生成所有类, 但将生成的普通方程式类 保留在一个共同的软件包中, 这样它们不会在源树上每个特定的方程式中被重复 。
我了解到,可以使用定制装订物,按每个系统指定包件,例如:
<jxb:bindings schemaLocation="common1.xsd" node="/xsd:schema">
<jxb:schemaBindings>
<jxb:package name="mypackage.commonclasses"/>
</jxb:schemaBindings>
</jxb:bindings>
我有以下结构:
schemas
| - common
| | - common1.xsd --> XSD with common types #1
| | - ...
| | - commonN.xsd --> XSD with common types #N
| | - commonBindings.xjb --> Defines package "mypackage.commons" for common*.xsd
| - specific1
| | - specific1.xsd --> Includes ../common/common{1-N}.xsd
| | - specific1.xjb --> Defines package "mypackage.specific1" for specific1.xsd
| - specificN
| | - specificN.xsd --> Includes only ../common/common1.xsd
| | - specificN.xjb --> Defines package "mypackage.specificN" for specificN.xsd
一切顺利地与:
xjc -b schemas/specific1
-b schemas/common
schemas/specific1/specific1.xsd
它在 mepackage. code1
和 mypackage.commons
中生成 特定类别1. xsd
。 但是,当我试图生成 特定类别N
的分类时, xjc
的错误如下:
[ERROR] "file:/drive/dir/schemas/common/common1.xsd" is not a part of
this compilation. Is this a mistake for "/drive/dir/schemas/common/commonBindings.xjb"?
line 2 of file:/drive/dir/schemas/common/commonBindings.xjb
对于在任何特定的 xsd 中未导入的每个常见 XSD, 我都会重复此错误 。
是否有办法我可以让 xjc
忽略 commonBindings.xjb
中在 XSD I m 生成分类时没有使用的绑定?
或者,我是否通过使用这种方法瞄准错误的方向,例如,应该使用特定的 xsd 中的注解?如果可能,我想避免修改方案。