Ссылки типа плагина Maven-Jaxb2 выдают уже определенные ошибки - PullRequest
0 голосов
/ 05 ноября 2018

Я новичок в плагине Jaxb для генерации моделей. У меня есть 2 xsd файла, где один xsd ссылается на тип в другом xsd

common.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema attributeFormDefault="unqualified" 
    elementFormDefault="qualified" 
    targetNamespace="http://www.example.com/schemas/common" 
    version="1.0" xmlns="http://www.example.com/schemas/common" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">

        <xsd:complexType name="person">
        <xsd:sequence>
            <xsd:element minOccurs="1" name="gender" type="xsd:string"/>
            <xsd:element minOccurs="1" name="dateOfBirth" type="xsd:string"/>
            <xsd:element minOccurs="1" name="name" type="xsd:string"/>
        </xsd:sequence>
    </xsd:complexType>
</xsd:schema>

pupil.xsd , это относится к человеку, определенному в common.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema attributeFormDefault="unqualified" 
        elementFormDefault="qualified" 
        targetNamespace="http://www.example.com/schemas/pupil" version="1.0"
        xmlns:common="http://www.example.com/schemas/common"
        xmlns="http://www.example.com/schemas/pupil" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

        <xsd:import namespace="http://www.example.com/schemas/common" schemaLocation="http://www.example.com/domain/schemas/common/common.xsd"/>

        <xsd:complexType name="student">
        <xsd:sequence>
                <xsd:element maxOccurs="1" minOccurs="1" name="class" type="xsd:string"/>
                <xsd:element maxOccurs="1" minOccurs="1" name="generralInfo" type="common:person"/>             
        </xsd:sequence>
    </xsd:complexType>

</xsd:schema>       

catalog.cat , попробуйте использовать функцию эпизода плагина

REWRITE_SYSTEM "http://www.example.com/domain/schemas/common/common.xsd"". "

pom.xml , это моя конфигурация сборки maven

<build>
    <defaultGoal>test</defaultGoal>
    <plugins>
      <plugin>
        <groupId>org.jvnet.jaxb2.maven2</groupId>
        <artifactId>maven-jaxb2-plugin</artifactId>
        <configuration>
          <extension>true</extension>
          <catalog>src/main/resources/catalog.cat</catalog>
        </configuration>
        <executions>
          <execution>
            <goals>
              <goal>generate</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

пока я бегу mvn clean install, я получаю Error

[ОШИБКА] Ошибка при разборе схемы (схем). Расположение [ http://www.example.com/domain/schemas/common/common.xsd{XXX,XX}]. org.xml.sax.SAXParseException; SYSTEMID: http://www.example.com/domain/schemas/common/common.xsd; номер строки: XXX; номер столбца: XXX; «человек» уже определен

Я пытался устранить эту ошибку, используя различные опции, упомянутые здесь , но это мне помогло. Я думаю, что я делаю что-то не так в конфигурации привязки или конфигурации pom

Может кто-нибудь указать, что здесь не так

1 Ответ

0 голосов
/ 06 ноября 2018

Я нашел решение для моей проблемы, было так много вещей, которые я делал неправильно

1) Изменить

<xsd:include>  to <xsd:import>

2) Оставьте пространство имен одинаковым для common.xsd и pupil.xsd

3) После этих изменений, за которыми я следовал, шаги из этого ответа

Вот пример проекта от автора самого плагина, который решает ту же проблему, с которой я столкнулся

...