wsimport / xjc命令行插件

时间:2014-02-14 20:53:07

标签: java web-services jaxb wsimport jaxb-xew-plugin

我刚刚使用xew帖子成功使用了一个名为this的wsimport / xjc插件和maven。

在我的公司使用Maven目前不是一个选项,所以我正在尝试使用Java 7 SDK中的wsimport实用程序。

如何在导入WSDL时告诉wsimport包含xew xjc插件?

我当前的命令行是:

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 个答案:

答案 0 :(得分: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>