java - 使用 xjc 从多个 xsd 文件生成 Java

标签 java jaxb maven-jaxb2-plugin jaxb2-maven-plugin

环境

我有多个 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 代码,但这会导致出现异常,指出某些字段已定义。

我还尝试添加绑定(bind),例如:

<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>

但是失败还是一样。

任何帮助将不胜感激! 提前致谢!

最佳答案

根据 lexcore 提供的信息,我发现所提供的 XSD 文件根本不正确。旧的 ant 构建似乎通过单独构建每个文件来隐藏这一点。最后,向每个 XSD 添加命名空间很有帮助。

关于java - 使用 xjc 从多个 xsd 文件生成 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51839470/

相关文章:

java - 字符串基数排序 - StringIndexOutOfBoundsEception

java - 替代@XmlSeeAlso

maven-jaxb2-plugin - 无法执行目标 org.codehaus.mojo :jaxb2-maven-plugin:1. 5:xjc

java - JAXB 绑定(bind)到 JAR 中的模式

java - 添加到特定于项目的类路径后会出现 Junit 警告

java - 按值分组打印

java - java中的结构化数据

java - Camel、JAXB 到 ActiveMQ 自动创建 XML

java - jaxb xjc 编译错误 Super Interface not found In jaxb generated class path

maven-2 - Maven 中同一项目的 maven-jaxb2-plugin 插曲,可能吗?