jaxb2 maven: объединение двух определений типа общего доступа xsd

#jaxb #maven-jaxb2-plugin

Вопрос:

У меня есть два xsd:

 <xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="request" type="SearchRequestType"/>

  <xs:complexType name="SearchRequestType">
    <xs:sequence>
      <xs:element name="oid" type="xs:string" minOccurs="0"/>
      <xs:element name="referenceDate" type="xs:dateTime" minOccurs="0"/>
      <xs:element name="startIndex" type="xs:long" minOccurs="0"/>
      <xs:element name="pageSize" type="xs:long" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

</xs:schema>
 

и catalegs-schema.xsd :

 <xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="request" type="SearchRequestType"/>

  <xs:complexType name="SearchRequestType">
    <xs:sequence>
      <xs:element name="tableName" type="xs:string" minOccurs="0"/>
      <xs:element name="oid" type="xs:string" minOccurs="0"/>
      <xs:element name="owner" type="OwnerType"/>
      <xs:element name="id" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="term" type="xs:string" minOccurs="0"/>
      <xs:element name="referenceDate" type="xs:dateTime" minOccurs="0"/>
      <xs:element name="startIndex" type="xs:long" minOccurs="0"/>
      <xs:element name="pageSize" type="xs:long" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="OwnerType">
    <xs:sequence>
      <xs:element name="ownerType" type="xs:string"/>
      <xs:element name="ownerCode" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

</xs:schema>
 

Я знаю, что могу создать два исполнения. Однако, используя этот подход, он сгенерирует два ObjectFactory .

Мой подход заключается в создании классов, разделяющих один ObjectFactory .

 <execution>
    <id>generate-merged</id>
    <goals>
        <goal>generate</goal>
    </goals>
    <configuration>
        <schemaLanguage>XMLSCHEMA</schemaLanguage>
        <generateDirectory>${project.basedir}/src/main/java</generateDirectory>
        <generatePackage>cat.catsalut.hes.mpi.hazelcast.loader.domain.serveiterritorial</generatePackage>
        <schemaDirectory>${basedir}/xsd/servei-territorial/merge</schemaDirectory>
        <schemaIncludes>
            <include>oid-schema.xsd</include>
            <include>catalegs-schema.xsd</include>
        </schemaIncludes>
        <episode>false</episode>
        <args>
            <arg>-npa</arg>
            <arg>-no-header</arg>
        </args>
        <bindingDirectory>${project.basedir}/xsd/servei-territorial/merge</bindingDirectory>
        <bindingIncludes>*.xml</bindingIncludes>
    </configuration>
</execution>
 

Проблема в том, что у обоих xsd есть SearchRequestType , как вы можете видеть выше.

Итак, я получаю это сообщение, так как обе схемы имеют SearchRequestType определение:

 'SearchRequestType' is already defined
 

Как я мог это устроить?