jaxbmaven-jaxb2-pluginxmlcatalogannoxjaxb-episode

JAXB separate episodes with annox customizations fails : SAXParseException2


I have 2 maven modules.

Now, I add annotations to both xsd files with annox (Swagger annotations). First module compilation succeeded but seconds module compilation fails with and exceptions :

[ERROR] Error while generating code.Location : com.sun.istack.SAXParseException2; systemId: jar:file:/C:/commons-0.0.1-SNAPSHOT.jar!/Commons.xsd; lineNumber: 15; columnNumber: 36; compiler was unable to honor annox:annotate schemaBinding customization. It is attached to a wrong place, or its inconsistent with other bindings.

First module

Second module

It's been days I'm trying to solve, without success, this error.


Solution

  • There is a bug using annox and episodes.

    I've solved the same issue through external binding (xjb file). In this way the schema is also clean.

    e.g.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <jaxb:bindings
      xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:xs="http://www.w3.org/2001/XMLSchema"
      xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:annox="http://annox.dev.java.net"
      xsi:schemaLocation="http://java.sun.com/xml/ns/jaxb http://java.sun.com/xml/ns/jaxb/bindingschema_2_0.xsd"
      jaxb:extensionBindingPrefixes="xjc annox"
      version="2.1">
    
      <jaxb:globalBindings>
        <jaxb:serializable uid="12345"/> 
      </jaxb:globalBindings>
    
    
      <jaxb:bindings schemaLocation="domain1.xsd" node="/xs:schema">
        <jaxb:bindings node="xs:complexType[@name='SomeRootType']">
          <annox:annotate>
            <annox:annotate annox:class="javax.xml.bind.annotation.XmlRootElement" name="SomeRootType"/>
          </annox:annotate>
        </jaxb:bindings>
      </jaxb:bindings>
    
    </jaxb:bindings>
    

    this is the maven plugin configuration

    <plugin>
            <groupId>org.jvnet.jaxb2.maven2</groupId>
            <artifactId>maven-jaxb2-plugin</artifactId>
            <version>0.8.1</version>
            <executions>
                <execution>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>generate</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <args>
                    <arg>-Xannotate</arg>
                    <arg>-Xnamespace-prefix</arg>
                    <arg>-nv</arg>
                </args>
                <extension>true</extension>
                <forceRegenerate>true</forceRegenerate>
                <bindingDirectory>${basedir}/src/main/resources/schema/xjb</bindingDirectory>
                <bindingIncludes>
                    <include>*.xjb</include>
                </bindingIncludes>
                <schemas>
                    <schema>
                        <fileset>
                            <directory>${basedir}/src/main/resources/schema/project/b</directory>
                            <includes>
                                <include>*.xsd</include>
                            </includes>
                        </fileset>
                    </schema>
                    <schema>
                        <dependencyResource>
                            <groupId>com.project.a</groupId>
                            <artifactId>artifact.a</artifactId>
                            <resource>schema/a.xsd</resource>
                        </dependencyResource>
                    </schema>
                </schemas>
                <episodes>
                    <episode>
                        <groupId>com.project.a</groupId>
                        <artifactId>artifact.a</artifactId>
                    </episode>
                </episodes>
                <debug>true</debug>
                <verbose>true</verbose>
                <plugins>
                    <plugin>
                        <groupId>org.jvnet.jaxb2_commons</groupId>
                        <artifactId>jaxb2-basics</artifactId>
                        <version>0.6.2</version>
                    </plugin>
                    <plugin>
                        <groupId>org.jvnet.jaxb2_commons</groupId>
                        <artifactId>jaxb2-basics-annotate</artifactId>
                        <version>0.6.2</version>
                    </plugin>
                    <plugin>
                        <groupId>org.jvnet.jaxb2_commons</groupId>
                        <artifactId>jaxb2-namespace-prefix</artifactId>
                        <version>1.1</version>
                    </plugin>
                </plugins>
            </configuration>
        </plugin>