2015-09-17 2 views
4

Я использую JAXB для создания классов для схемы, которая импортирует другие схемы. Я использую maven и настроил плагин maven-jaxb2 для использования зависимостей в качестве эпизодов, чтобы пропустить генерирующие классы для импортированных схем.JAXB генерирует дубликат ObjectFactory для пакета уже в эпизоде ​​

Тем не менее, JAXB продолжает генерировать ObjectFactories для импортированных схем, что приводит к конфликтам классов и неправильному поведению во время выполнения.

Как обходной путь, я использую maven-antrun-plugin для очистки этих дополнительных файлов. Есть ли лучший способ избежать этой проблемы?

+0

Ах, мой старый добрый maven-antrun-plugin по-прежнему используется ;-) – Kenney

+0

Если вы используете [это] (https://github.com/highsource/maven-jaxb2-plugin/wiki/Modular-Schema -Compilation), то похоже, что импортированные схемы не распознаются как эпизоды. Как выглядит ваш POM? – Kenney

+0

@ Кенни Не обязательно. Даже с эпизодами XJC иногда по-прежнему генерирует почти пустую 'ObjectFactory'. – lexicore

ответ

0

Являются ли ваши сгенерированные классы динамическими/изменяющимися часто? Вы можете избавиться от любого сгенерированного кода, который вы больше не используете после его создания. Иногда даже проще вручную писать классы сопоставления, поскольку вы можете использовать такие вещи, как @XmJavaTypeAdatper, которые сгенерированный код не будет иметь.

6

Даже с эпизодами XJC иногда генерирует некоторый рудиментарный ObjectFactory. Я знаю этот эффект и приписываю его ошибке в XJC. Мое обходное решение до сих пор было именно тем, которое вы применяете, а именно maven-antrun-plugin с заданием delete, например here.

Но если у вас все получилось - несмотря на эпизоды - может возникнуть проблема с вашей конфигурацией. Убедитесь, что ваш артефакт эпизода содержит действительный META-INF\sun-jaxb.episode с schemaBindings map="false" для вашего пакета.

Отказ от ответственности: Я являюсь автором maven-jaxb2-plugin.

+1

Есть ли ошибка в проекте JAXB? Будет ли это когда-нибудь исправляться? Есть идеи? благодаря! –

Смежные вопросы