假设我在 resources/a 目录中有 a.xsd 文件,在 resources/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
如果这些问题分开问会更好。
第一个问题 - 只需使用多个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>
Run Code Online (Sandbox Code Playgroud)
第二个问题 - 多次执行或自行进行一些文件移动后处理。为什么多次执行对你不起作用?
更新:您说您对每个命名空间而不是每个文件的解决方案感兴趣。
首先,这并不重要,无论如何,最终它都是每个命名空间的解决方案。如果您通过 绑定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>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4175 次 |
最近记录: |