【发布时间】: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