... осознание этого факта ушло много времени.
Пришлось мучить JAXB.
Классы из XSD генерятся вот такой штукой: maven-jaxb2-plugin. Она умеет в jaxb bindings, но как всех обмануть и подменить в bindings.xjc неймспейсы - я не придумал (может, есть способ?)
Но оказалось, что в интернетах есть плагин для плагина, который таки добавляет в заголовок сгенерированных классов нужную инфу:
https://github.com/Siggen/jaxb2-namespace-prefixHey dougs! I herd you like generator plugins, so we put generator plugin into your generatior plugin, so you can plug generators while your generate plugins
Короче, он какой-то косой, и его действие не распространяется на тэги group, импортированные из другой xsd (ну или я не придумал, как это сделать).
Я хотел прописать bindings node, вдруг это хакнет систему. Но оказалось, что падла почему-то совершенно не понимает запросы типа //*[local-name()=РассветКоммунизма], и падает с ошибкой "ничего не нашлось". А если попробовать //* чисто для теста, оно падает с ошибкой "слишком дофига элементов, не справляюсь, их там больше 25!". Двадцать пять элементов хватить для всех (с). Короче, что за дерево оно там парсит ничерта не понятно, но учитывая что поиск по local-name падает, это явно не моя XSD.
И еще автор забил публиковать стабильные релизы лет 5 как, свежая версия есть только в Sonatype Snapshots.
Вообще там всего плагина - одна портяна на пару экранов. Наверное это как-то можно починить, но лень сейчас с этим пердолиться.
В результате, после МНОГОЧИСЛЕННЫХ попыток обрулить эту проблему разнообразными способами и костылями, пришлось предать общечеловеческие ценности и залить автосгенерированный package-info.java прямо в гит, добавив к нему в шапку еще один @javax.xml.bind.annotation.XmlNs вручную. Причем т.к. если положить _только_ package-info, оно начинает плакать "ой, я тут пытаюсь работать, а класс уже проаннотирован" и падает с ошибкой, пришлось еще навернуть эксклудов.
Кто дочитал до конца, всем синей изоленты.