【问题标题】:How to add extraClasses option to Ant script when calling java2wsdl?调用 java2wsdl 时如何向 Ant 脚本添加 extraClasses 选项?
【发布时间】:2012-11-18 23:06:19
【问题描述】:

我想在生成 java2wsdl 时传递 extraClasses 参数。这是我的 Ant 任务:

<target name="rews.all" depends="xews.aar">
    <echo message="${axis2.classpath}" />
    <delete file="${build.dir}/wsdl/XEWS.wsdl" />
    <taskdef name="java2wsdl"
             classname="org.apache.ws.java2wsdl.Java2WSDLTask"
             classpathref="axis2.classpath">                 
    </taskdef>
    <java2wsdl className="com.dd.xews.XEWS"
               outputLocation="${build.dir}/wsdl/"
               targetNamespace="http://xews.dd.com/"
               schemaTargetNamespace="http://xews.dd.com">
        <classpath>
            <pathelement path="${axis2.classpath}"/>
            <pathelement location="${build.dir}/classes"/>
            <pathelement location="${vendor.dir}/AWS/lib/aws-java-sdk-1.2.1.jar"/>
        </classpath>            
    </java2wsdl>
    <copy todir="${build.dir}/" file="${build.dir}/wsdl/XEWS.wsdl"/>
</target>

尝试了一切,但没有运气。

有人知道语法吗?我如何在这里添加额外的类?

Test1(失败)

这失败了,错误为java2wsdl doesn't support the "extraClasses" attribute:

<java2wsdl className             ="com.dd.xews.XEWS"
           outputLocation        ="${build.dir}/wsdl/"
           targetNamespace       ="http://xews.dd.com/"
           schemaTargetNamespace ="http://xews.dd.com"
           extraClasses          ="com.dd.xews.XEWS.Emailer.java">  
</java2wsdl>

如何找出java2wsdl Ant task支持哪些属性?

我的 Axis2 版本是 1.5.4。

【问题讨论】:

    标签: java ant axis2 axis wsdl2java


    【解决方案1】:

    这里是 Ant 任务源代码的链接:Java2WSDLTask。

    #setExtraClasses 接受 String 参数,然后尝试使用逗号分隔符对其进行拆分。所以尝试传递类似

    的东西

    &lt;extraClasses&gt;com.test.Class1,com.test.Class2&lt;/extraClasses&gt;

    编辑

    这不适用于旧版本的 Axis2(更准确地说 - 1.6.0 之前的版本)。这是因为 'extraClasses' 属性被指定为数组类型,显然不支持作为 Ant 任务属性。您可以在此 JIRA 问题中找到所有详细信息:AXIS2-4634: Ant task Java2WSDLTask does not allow the use of extraClasses

    使其工作的最简单方法是将 Axis2 JAR 升级到更新的 1.6.x 版本。如果您由于某些特定项目的原因而被 Axis2 版本卡住(我认为应该没有),您可以从较新版本中获取 Java2WSDLTask 的源代码(参见上面的 GrepCode 链接),并制作一份这个任务在你的项目中(你必须使用不同的类名或包),然后像你现在使用它一样将它用作一个 Ant 任务。除了可以使用“extraClasses”属性。

    【讨论】:

    • 参见上面的Test1。它失败了。还有其他想法吗?
    • 我认为它应该是类名,没有 .java 扩展名。例如,extraClasses = "com.dd.xews.XEWS.Emailer";这是静态内部类吗?
    • 错误是:java2wsdl doesn't support the "extraClasses" attribute.
    • 它确实支持 extraClasses 属性, - 刚刚在一个简单的示例(axis2-1.6.2)上进行了测试。您使用的是哪个版本的 Axis2?
    • 编辑了我的答案:您应该使用 1.6.0 或更高版本才能使用“extraClasses”属性。
    【解决方案2】:

    Axis2 1.4 及更高版本支持“-xc”属性。我是这样做的:

    <java classname="org.apache.ws.java2wsdl.Java2WSDL" fork="true">
       ....
       <arg value="-xc"/>
       <arg value="com.example.mypackage.MyClass"/>
       <arg value="-xc"/>
       <arg value="com.example.anotherpackage.MyOtherClass"/>
       ....
    </java>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多