powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как правильно пользоваться каталогом схем XSD при генерации исходников?
6 сообщений из 6, страница 1 из 1
Как правильно пользоваться каталогом схем XSD при генерации исходников?
    #38800404
gamych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ситуация условно следующая. Имеются схемы a.xsd и b.xsd, которая импортит a.xsd (в schemaLocation записан относительный путь) и содержит описания типов данных, основанных на типах из a.xsd. В обеих схемах имеются описания элементов соответствующих типов. Обе схемы упакованы в xsd.jar, в котором имеется также каталог схем. Для каждой схемы генерятся классы java и файл эпизода, находятся в a.jar и b.jar. Соответственно, в b.jar нет классов из a.xsd, используются те классы, что находятся в a.jar. При генерации классов используются схемы из xsd.jar. Генерация и сборка осуществляется orj.jvnet.jaxb2.maven2:maven-jaxb2-plugin:0.9.1. Записи каталога имеют вид SYSTEM "url" "maven:groupId:artifactId:jar::version!/имя-файла-со-схемой". Но на этом этапе каталог ещё не используется, в pom.xml записаны непосредственно ссылки на соответствующие схемы в xsd.jar.

Теперь я делаю новый проект. Схемы из xsd.jar выложены на сервер в сети. К проекту подключены зависимостями xsd.jar, a.jar и b.jar. В проекте имеется схема c.xsd, импортящая обе схемы по url на этом сервере. В ней, соответственно, имеются ссылки на типы данных и элементы из тех двух схем, используются эпизоды из тех двух jar-ов, и всё нормально работает - классы генерятся, те, какие надо, какие не надо - берутся из зависимостей. Где брать эпизоды - указано непосредственно в pom.xml, автоматический поиск эпизодов в зависимостях отключен.

Но мне надо, чтобы схемы для импорта брались не с сервера в сети, а из xsd.jar. Я в pom.xml записываю ссылку на каталог из него, а в схему c.xsd - импорт схем не по url на сервер, а по тем url, что записаны в каталоге. В результате при сборке проекта maven эти схемы резолвит, но! Вылетает ошибка, смысл которой в том, что дублируется описание типа, объявленного в схеме a.xsd. Включив сборку с ключом '-X', я обнаружил, что схемы a.xsd и b.xsd резолвятся каждая дважды. Должно ли так быть - я не знаю.

Ну и, собственно, вопрос к знатокам - что я делаю не так и как мне получить требуемый результат?
...
Рейтинг: 0 / 0
Как правильно пользоваться каталогом схем XSD при генерации исходников?
    #38800407
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gamych,

Пробовали задавать абсолютый путь к XSD через URL формата jar://...
...
Рейтинг: 0 / 0
Как правильно пользоваться каталогом схем XSD при генерации исходников?
    #38800431
gamych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

В каком месте, в schemaLocation?
...
Рейтинг: 0 / 0
Как правильно пользоваться каталогом схем XSD при генерации исходников?
    #38800444
gamych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Хотя неважно, где. Нет, не пробовал. Нельзя мне так. Зависимости ведь находятся в локальном репозитории maven, я не могу рассчитывать, что там, где будет проводиться сборка, абсолютные файловые пути будут такие же, как у меня.
...
Рейтинг: 0 / 0
Как правильно пользоваться каталогом схем XSD при генерации исходников?
    #38800782
gamych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Тем не менее, попробовал. Да, если в schemaLocation написать url-ы вида "jar:file:полный-путь-к-jar-со-схемами!/путь-к-схеме-внутри-jar", то генерация исходников успешна.

Что же, копировать зависимость со схемами в target и писать в schemaLocation соответствующий url? Неужели это не я неправильно пользуюсь плагином, а эта функциональность в мавеновском плагине не работает?
...
Рейтинг: 0 / 0
Как правильно пользоваться каталогом схем XSD при генерации исходников?
    #38801948
gamych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Продолжаю делиться результатами исследований :)

Дело явно не в плагине. Если запустить xjc из командной строки командой вида

xjc -catalog 'jar:file:xsd.jar!/catalog.cat' c.xsd a.jar b.jar

то вылетает ровно та же диагностика - тип is already defined. Однако если не подключать jar-ы с классами, то есть выполнить команду вида

xjc -catalog 'jar:file:xsd.jar!/catalog.cat' c.xsd

то процесс завершается без ошибок. При этом, разумеется, генерятся классы для всех трёх схем, что совершенно не соответствует моему замыслу. Получается, что имеет место какой-то конфликт между импортируемыми схемами и sun-jaxb.episode из jar-ов с классами, так, что ли?

Подскажите, корифеи, что я не так делаю?!!
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Как правильно пользоваться каталогом схем XSD при генерации исходников?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]