
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
10.11.2014, 10:51
|
|||
|---|---|---|---|
|
|||
Как правильно пользоваться каталогом схем XSD при генерации исходников? |
|||
|
#18+
Ситуация условно следующая. Имеются схемы 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 резолвятся каждая дважды. Должно ли так быть - я не знаю. Ну и, собственно, вопрос к знатокам - что я делаю не так и как мне получить требуемый результат? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.11.2014, 10:54
|
|||
|---|---|---|---|
|
|||
Как правильно пользоваться каталогом схем XSD при генерации исходников? |
|||
|
#18+
gamych, Пробовали задавать абсолютый путь к XSD через URL формата jar://... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.11.2014, 11:07
|
|||
|---|---|---|---|
|
|||
Как правильно пользоваться каталогом схем XSD при генерации исходников? |
|||
|
#18+
Blazkowicz, В каком месте, в schemaLocation? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.11.2014, 11:12
|
|||
|---|---|---|---|
|
|||
Как правильно пользоваться каталогом схем XSD при генерации исходников? |
|||
|
#18+
Blazkowicz, Хотя неважно, где. Нет, не пробовал. Нельзя мне так. Зависимости ведь находятся в локальном репозитории maven, я не могу рассчитывать, что там, где будет проводиться сборка, абсолютные файловые пути будут такие же, как у меня. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.11.2014, 14:06
|
|||
|---|---|---|---|
|
|||
Как правильно пользоваться каталогом схем XSD при генерации исходников? |
|||
|
#18+
Blazkowicz, Тем не менее, попробовал. Да, если в schemaLocation написать url-ы вида "jar:file:полный-путь-к-jar-со-схемами!/путь-к-схеме-внутри-jar", то генерация исходников успешна. Что же, копировать зависимость со схемами в target и писать в schemaLocation соответствующий url? Неужели это не я неправильно пользуюсь плагином, а эта функциональность в мавеновском плагине не работает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.11.2014, 13:08
|
|||
|---|---|---|---|
|
|||
Как правильно пользоваться каталогом схем XSD при генерации исходников? |
|||
|
#18+
Продолжаю делиться результатами исследований :) Дело явно не в плагине. Если запустить 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-ов с классами, так, что ли? Подскажите, корифеи, что я не так делаю?!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/search_topic.php?author=granula3&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
get settings: |
9ms |
get forum list: |
22ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
179ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 464ms |
| total: | 771ms |

| 0 / 0 |
