Как использовать расширения JAXB в командной строке xjc
Я работаю над связанной проблемой здесь, но у меня есть отдельный вопрос. Возможно, это все часть одной и той же проблемы, но она кажется другой.
Из-за проблем, возникающих при запуске XJC через задачу Ant и через фасад, я сейчас пытаюсь запустить его с помощью инструмента командной строки "xjc" из JDK.
Как и в исходной задаче, я пытаюсь использовать расширения "Element Wrapper" и "Fluent API", поэтому моя командная строка выглядит следующим образом:
xjc -extension -classpath "lib/jaxb-fluent-api-2.1.8.jar;lib/jaxb-xew-plugin-1.4.jar" -Xxew -summary target/xew-summary.txt -instantiate lazy -Xfluent-api schema/serviceCallResults.xsd
Это в основном те же параметры, которые я отправлял в плагин Maven "cxf-jaxb-plugin", который работал долгое время. К сожалению, эта командная строка "xjc" не работает с:
нераспознанный параметр -Xxew
Что здесь может быть не так?
1 ответ
Это просто не работает, извините.
Плагины XJC должны расширять com.sun.tools.xjc.Plugin
учебный класс. Но XJC, который входит в JDK и доступен как xjc
двоичный (напр. xjc.exe
под винду) перепаковывается: com.sun.tools.xjc
-> com.sun.tools.internal.xjc
,
Так что в ванильной командной строке xjc
у вас нет com.sun.tools.xjc.Plugin
класс (который расширяет плагины XJC), но com.sun.tools.internal.xjc.Plugin
,
Итак, CLI xjc
просто не работает с плагинами XJC. Единственные плагины, которые все еще работают, это те, которые также перепакованы. (Ex. com.sun.tools.internal.xjc.addon.code_injector.PluginImpl
.)
Если вы хотите командной строки, то попробуйте выяснить, java -cp ...
параметры, это единственный способ заставить его работать со сторонними плагинами XJC, такими как XEW или JAXB2-Basics.