JAXB maven plugin bindings does not generate classes with interface

Viewed 33

I'm trying to generate the java files from XSD with use of jaxb2-maven-plugin. This works without any issues and I can see generated classes in target directory.

Now I decided to let all generated classes implement some interface. So I set up bindings.xjb file where I'm defining the interface. The issue is the plugin can not recognize correct namespace which defines inheritance.

Unsupported binding namespace "http://jaxb2-commons.dev.java.net/basic/inheritance". Perhaps you meant "http://jaxb.dev.java.net/plugin/code-injector"?

I think code-injector is not what I'm looking for, since this allow to define custom pieces of code to add to generated file.

I'm trying to use latest maven plugin:

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

The bindings.xjb file contains following content:

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

And the application.xsd file:

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

I have found this namespace xmlns:inheritance="http://jaxb2-commons.dev.java.net/basic/inheritance" on the internet.

Also notice plugin requires version 3.0 of bindings.xjb file.

What is the correct definition of namespace to let plugin generate classes with interface?

0 Answers
Related