JAXB создает дубликат ObjectFactory для пакета уже в эпизоде

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

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

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


person Lorenzo Bigagli    schedule 17.09.2015    source источник
comment
Ах, мой старый добрый maven-antrun-plugin все еще используется ;-)   -  person Kenney    schedule 17.09.2015
comment
Если вы используете это, то это выглядит например, импортированные схемы не распознаются как эпизоды. Как выглядит ваш ПОМ?   -  person Kenney    schedule 17.09.2015
comment
@ Кенни Не обязательно. Даже с эпизодами XJC иногда генерирует почти пустые ObjectFactory.   -  person lexicore    schedule 18.09.2015


Ответы (2)


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

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

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

person lexicore    schedule 18.09.2015
comment
Есть ли ошибка в проекте JAXB? Этот когда-нибудь исправят? Есть идеи? Спасибо! - person Philip Helger; 12.07.2016

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

person mvd    schedule 17.09.2015