Как я могу запретить JAXB генерировать Java из импортированной схемы? - PullRequest
1 голос
/ 07 апреля 2010

У меня есть два проекта Java, оба генерируют классы Java на основе определения схемы, я использую xjc для создания классов.

Мой второй проект зависит от класса из первого проекта, и, в частности, один из классов, который я хотел бы создать во втором проекте, должен использовать один из типов из первого проекта.

Для достижения этой зависимости на уровне схемы я использую простой xsd:import для сопоставления пространства имен с определенной схемой.

JAXB прекрасно работает с этим условием, за исключением того, что он также генерирует типы первого проекта во втором проекте. Так что после запуска есть что-то вроде этого:

Project A
  +-- com.foo.bar
    +-- TypeA

Project B
  +-- com.foo.asdf
    +-- TypeB
  +-- com.foo.bar
    +-- TypeA

Второй «TypeA» нежелателен, и я бы никогда не хотел его генерировать. Как я могу дать указание JAXB не генерировать классы для «TypeA», которые он находит в результате оператора импорта?

Ответы [ 2 ]

5 голосов
/ 07 апреля 2010

Настройте его как элемент DOM (<jaxb:dom/>).

<xs:element name="a" type="a:Type">
  <xs:annotation>
    <xs:appinfo>
      <jaxb:dom/>
    </xs:appinfo>
  </xs:annotation>
</xs:element>

Вас также может заинтересовать сборник отдельных / эпизодических схем .

0 голосов
/ 12 мая 2012

другой вариант, если вы используете эпизодическую компиляцию Google, поэтому, если в проекте A уже есть объекты jaxb, вы можете использовать его файл эпизода для компиляции объекта jaxb проекта B, но НЕ должны перекомпилировать xsds проекта A в объекты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...