假设我在资源/目录中有一个.xsd文件 资源/ b目录中的b.xsd文件。 a.xsd和b.xsd有自己的命名空间:http://a.com和http://b.com。 最后,a.xsd导入b.xsd。
我想配置maven-jaxb2-plugin来生成 com.a包中的A.java和com.b包中的B.java
答案 0 :(得分:2)
如果你单独提出这些问题会更好。
第一个问题 - 只需使用多个jaxb:schemaBindings
。
<jaxb:bindings schemaLocation="a.xsd" node="/xs:schema">
<jaxb:schemaBindings>
<jaxb:package name="com.a"/>
</jaxb:schemaBindings>
</jaxb:bindings>
<jaxb:bindings schemaLocation="b.xsd" node="/xs:schema">
<jaxb:schemaBindings>
<jaxb:package name="com.b"/>
</jaxb:schemaBindings>
</jaxb:bindings>
第二个问题 - 多次执行或自行执行一些文件移动后处理。为什么多次执行对你不起作用?
更新:您说您对每个命名空间感兴趣,而不是按文件解决方案。
首先,它并不重要,最后它在任何情况下都是一个每命名空间的解决方案。如果通过schemaLocation
进行绑定,则XJC会将schemaBindings
与该模式的目标命名空间相关联。您不必自定义该架构的每个文件,也不能为一个命名空间定义两个包。
其次,您可以使用SCD绑定:
<jaxb:bindings scd="x-schema::tns" xmlns:tns="http://a.com">
<jaxb:schemaBindings>
<jaxb:package name="com.a"/>
</jaxb:schemaBindings>
</jaxb:bindings>