Компиляция нескольких схем в различные пакеты с помощью JAXB 2.1

У меня есть CommonTypes.xsd, который я включаю в свой весь другой XSDs, использующий xs:include. Я добираюсь

Multiple <schemaBindings> are defined for the target namespace ""

когда я пытаюсь скомпилировать его в другое использование пакетов обязательные файлы. Скажите мне, существует ли способ скомпилировать их в различные пакеты. Я использую jaxb 2.1

11
задан skaffman 4 May 2010 в 11:09
поделиться

2 ответа

Я столкнулся с той же проблемой и еще не решил ее, но боюсь, что нельзя сгенерировать XSD в разные пакеты :

Нельзя иметь более одного на пространство имен, поэтому невозможно иметь две схемы в одном целевом пространстве имен, скомпилированные в разные пакеты Java

из Ограничения компилятора в конце этой страницы

, но если кто-то найдет какой-то обходной точки, просто сообщите нам, пожалуйста

5
ответ дан 3 December 2019 в 05:57
поделиться

Ага, выход есть.
Предположим:

xsd/common/common.xsd
xsd/foo/foo.xsd 

В общем каталоге место common.xjb :

<jxb:schemaBindings>
    <jxb:package name="mypkg.common">
    </jxb:package>
</jxb:schemaBindings> 

В каталоге foo место foo.xjb :

<jxb:schemaBindings>
    <jxb:package name="mypkg.foo">
     </jxb:package>
</jxb:schemaBindings> 

В build.xml , создайте по одной задаче xjc для каждого:

<xjc destdir="${app.src}" readOnly="true" package="mypkg.common">
    <schema dir="${app.schema}/common" includes="*.xsd" />
    <binding dir="${app.schema}/common" includes="*.xjb" />
</xjc>
<xjc destdir="${app.src}" readOnly="true" package="mypkg.foo">
    <schema dir="${app.schema}/foo" includes="*.xsd" />
    <binding dir="${app.schema}/foo" includes="foo.xjb" />
</xjc>

Убедитесь, что common.xsd имеет targetNameSpace , который отличается от foo.xsd ] targetNameSpace .

6
ответ дан 3 December 2019 в 05:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: