我正在尝试使用org.jvnet.jaxb2.maven2:maven-jaxb2-plugin
编译一堆XSD。
我将名称空间映射到这样的包。
<jaxb:bindings namespace="urn:some:a" schemaLocation="../xsd/a.xsd">
<jaxb:schemaBindings>
<jaxb:package name="some.a"/>
</jaxb:schemaBindings>
</jaxb:bindings>
<jaxb:bindings namespace="urn:some:b" schemaLocation="../xsd/b.xsd">
<jaxb:schemaBindings>
<jaxb:package name="some.b"/>
</jaxb:schemaBindings>
</jaxb:bindings>
问题是c.xsd
不在任何命名空间中。它实际上编译成generated
包。
我很狂热,
<jaxb:bindings namespace="" schemaLocation="../xsd/c.xsd">
<jaxb:schemaBindings>
<jaxb:package name="some"/>
</jaxb:schemaBindings>
</jaxb:bindings>
它不起作用。
我该怎么做?
<小时/> 的更新
Woo,xjc工具doc说...
如果未声明
targetNamespace
,则使用名为generated
的硬编码包。
答案 0 :(得分:2)
Woo,xjc工具doc说...
如果未声明
targetNamespace
,则使用名为generated
的硬编码包。
仅在未使用jaxb:package
进行自定义时,请参阅com.sun.tools.xjc.reader.xmlschema.ClassSelector。
实际上,以下自定义应该有效:
<jaxb:bindings schemaLocation="../xsd/c.xsd">
<jaxb:schemaBindings>
<jaxb:package name="some"/>
</jaxb:schemaBindings>
</jaxb:bindings>
您namespace
上不需要jaxb:bindings
。
这是test project demonstrates exactly that。
免责声明:我是maven-jaxb2-plugin的作者。