【发布时间】:2018-08-14 10:38:11
【问题描述】:
环境
我有多个 ant 任务,其中每个任务都从一个 XSD 为不同的包生成 java 代码。所有任务总是一个接一个地执行。
在这些 xsd 中,某些元素可能会被定义多次,但每个文件只定义一次。这些元素应该放在不同的包中。例如:
A_v1.xsd - contains:
-> <xs:element name="A"> => my.package.a_v1.A.java
A_v2.xsd - contains:
-> <xs:element name="A"> => my.package.a_v2.A.java
这很好用。
问题
如何将其翻译成 maven?
问题/我尝试了什么
我无法在 pom 中创建多个插件执行,将它们配置不同并让它们同时运行。
因此,我尝试一步从 XSD 生成所有 Java 代码,但这会导致异常,指出某些字段已定义。
我还尝试添加如下绑定:
<jxb:bindings xmlns:jxb="http://java.sun.com/xml/ns/jaxb" version="2.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema" >
<jxb:bindings schemaLocation="A_v1.xsd" >
<jxb:schemaBindings>
<jxb:package name="my.package.a_v1"/>
</jxb:schemaBindings>
</jxb:bindings>
<jxb:bindings schemaLocation="A_v2.xsd" >
<jxb:schemaBindings>
<jxb:package name="my.package.a_v2"/>
</jxb:schemaBindings>
</jxb:bindings>
但是失败还是一样。
任何帮助将不胜感激! 提前致谢!
【问题讨论】:
-
这些 XSD 是否具有相同的命名空间?
-
我尝试了不同的,没有命名空间。我应该为同一个命名空间声明两者吗?
-
如果您的架构具有相同的命名空间和相同的元素名称,那么它们本质上是相同的元素。然后,您必须单独编译这些模式。如果这些模式有不同的命名空间,这应该可以工作 OOTB。如果您提供完整的
mvn -X clean install错误日志,将会很有帮助。您收到哪些错误消息? -
看来我明白了。不知何故,我有一个在绑定中定义命名空间的示例,我认为这没关系。似乎这不起作用,所以我检查了命名空间的 XSD 并添加了它们。现在一切正常。在 XJB 文件中定义命名空间是否可能或有意义?非常感谢您的帮助!
-
不,命名空间定义是架构的一个组成部分。
标签: java jaxb maven-jaxb2-plugin jaxb2-maven-plugin