【问题标题】:JAXB maven plugin bindings does not generate classes with interfaceJAXB maven 插件绑定不生成具有接口的类
【发布时间】:2023-01-04 22:18:02
【问题描述】:

我正在尝试使用 jaxb2-maven-plugin 从 XSD 生成 java 文件。这没有任何问题,我可以在目标目录中看到生成的类。

现在我决定让所有生成的类实现一些接口。所以我设置了绑定.xjb我在其中定义接口的文件。问题是插件无法识别定义继承的正确命名空间。

不支持的绑定命名空间“http://jaxb2-commons.dev.java.net/basic/inheritance”。也许你的意思是“http://jaxb.dev.java.net/plugin/code-injector”?

我认为代码注入器不是我要找的,因为这允许定义自定义代码段以添加到生成的文件中。

我正在尝试使用最新的 Maven 插件:

<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>3.1.0</version>

bindings.xjb 文件包含以下内容:

<?xml version="1.0" encoding="UTF-8"?>
<jaxb:bindings xmlns:jaxb="https://jakarta.ee/xml/ns/jaxb"
               xmlns:xs="http://www.w3.org/2001/XMLSchema"
               xmlns:inheritance="http://jaxb2-commons.dev.java.net/basic/inheritance"
               jaxb:extensionBindingPrefixes="inheritance"
               version="3.0">

    <jaxb:bindings schemaLocation="application.xsd" node="/xs:schema">
        <jaxb:bindings node="//xs:complexType[@name='applicationType']">
            <inheritance:implements>com.example.SomeInterface</inheritance:implements>
            <jaxb:property name="inheritance"/>
        </jaxb:bindings>
    </jaxb:bindings>

</jaxb:bindings>

和 application.xsd 文件:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="application" type="applicationType"/>

    <xs:complexType name="applicationType">
        <xs:sequence>
            <xs:element type="xs:string" name="language"/>
        </xs:sequence>
    </xs:complexType>
</xs:schema>

我在互联网上找到了这个命名空间 xmlns:inheritance="http://jaxb2-commons.dev.java.net/basic/inheritance"。

另请注意插件需要 3.0 版的 bindings.xjb 文件。

让插件生成带有接口的类的命名空间的正确定义是什么?

【问题讨论】:

    标签: java maven inheritance interface jaxb


    【解决方案1】:

    我也有同样的问题。我正在尝试从带有“jakarta.xml”的 xsd 生成实现特定接口的类。“命名空间,到目前为止,我还没有找到解决方案。使用“org.codehaus.mojo:jaxb2-maven-plugin”插件,我可以用“jakarta.“命名空间,但没有实现我的接口。实现接口的唯一方法是使用“org.jvnet.jaxb2.maven2:maven-jaxb2-plugin”插件,但生成的类不使用 jakarta.*”命名空间。任何人都可以解决类似的问题吗?

    【讨论】:

      猜你喜欢
      • 2012-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-20
      • 1970-01-01
      • 2019-12-07
      • 1970-01-01
      相关资源
      最近更新 更多