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

start [/forum/topic.php?fid=59&fpage=152&tid=2126292]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
303ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 188ms |
| total: | 584ms |

| 0 / 0 |
