Плагины командной строки wsimport/xjc
Я только что успешно использовал плагин wsimport/xjc под названием xew с maven, используя этот пост.
Использование Maven для этого в моей компании в настоящее время не вариант, поэтому я пытаюсь использовать утилиту wsimport из Java 7 SDK.
Как мне сказать wsimport включить плагин xew xjc при импорте моего WSDL?
Моя текущая командная строка:
wsimport -Xdebug -s src\main\java -d target\classes -extension -B-extension -B-classpath target\dependency\*:. -B-Xxew:instantiate lazy -B-Xxew:delete src\main\java\test.wsdl
Хотя он пока не будет использовать параметры -B: no such JAXB option: -Xxew
, Плагин xew и jaxb-xjc.jar находятся в рабочем каталоге и в системе CLASSPATH.
1 ответ
Решение
Я пошел и использовал Ant, чтобы преобразовать мой WSDL в код. Для этого я скачал jaxws-ri версии 2.2.8 и предложил следующий скрипт Ant, который работает. Теперь я могу использовать maven-antrun-plugin для вызова скрипта.
<project>
<property name="jaxws.home" location="lib/jaxws-ri" />
<path id="jaxws.classpath">
<fileset dir="${jaxws.home}/lib" includes="jaxws-tools.jar" />
</path>
<taskdef classpathref="jaxws.classpath" name="wsimport" classname="com.sun.tools.ws.ant.WsImport" />
<wsimport keep="true" sourcedestdir="src/main/java" destdir="target/classes" extension="true" wsdl="src/main/java/test.wsdl">
<xjcarg value="-cp" />
<xjcarg file="lib/commons-logging-api-1.1.jar" />
<xjcarg value="-cp" />
<xjcarg file="lib/jaxb-xew-plugin-1.1.jar" />
<xjcarg value="-Xxew" />
<xjcarg value="-Xxew:instantiate lazy"/>
<xjcarg value="-Xxew:delete"/>
</wsimport>
</project>