Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

IntelliJ bindingDirectory for jaxb-maven-plugin

I want to add globalBinding for my schema.xsd generated types, in a seperate schema.xjb binding file. I am using IntelliJ and am not sure if this problem is maven or Intellij doing (cause this example runs as expected in eclipse for instance). The error I get is:

org.xml.sax.SAXParseException; systemId: file:/D:/Projects/Location/To/Project/src/main/resources/xsd/schema.xsd; lineNumber: 7; columnNumber: 10; vendor extension bindings (jaxb:extensionBindingPrefixes) are not allowed in the strict mode. Use -extension.

Here is build element in my pom.xml:

<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>jaxb2-maven-plugin</artifactId>
            <version>1.5</version>
            <executions>
                <execution>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>xjc</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <!-- The name of your generated source package -->
                <packageName>com.my.model.example</packageName>
                    <schemaDirectory>${project.basedir}/src/main/resources/xsd</schemaDirectory>
                <!-- Well Intellij acts badly when it comes down to binding files, so there is that. -->
                <bindingDirectory>${project.basedir}/src/main/resources/xjb</bindingDirectory>
            </configuration>
        </plugin>

    </plugins>

</build>

Here is my schema located in /src/main/resources/xsd:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           id="SampleSchema"
           targetNamespace="http://sample.com/namespace"
           elementFormDefault="qualified"
           xmlns="http://sample.com/namespace"
        >

    <xs:element name="Example">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="name" type="xs:string" maxOccurs="unbounded" />
                <xs:element name="street" type="xs:string"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

</xs:schema>

Here is my bindingFile located in /src/main/resources/xjb

<jxb:bindings xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
          version="2.0"
          xsi:schemaLocation="../xsd/schema.xsd">
    <jxb:globalBindings>
        <xjc:simple/>
    </jxb:globalBindings>
</jxb:bindings>

Any hints how to resolve this would be great!

like image 431
Spase Markovski Avatar asked Dec 27 '22 01:12

Spase Markovski


1 Answers

Okay guys I found what seems to be the problem. I was missing an <extension> element in my <configuration> element in the pom.xml! Like so:

<configuration>

<packageName>com.my.model.example</packageName>
<schemaDirectory>${project.basedir}/src/main/resources/xsd</schemaDirectory>
<bindingDirectory>${project.basedir}/src/main/resources/xjb</bindingDirectory>

<!-- tada! -->
<extension>true</extension>
</configuration>
like image 179
Spase Markovski Avatar answered Jan 07 '23 04:01

Spase Markovski