我想在生成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>


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

有人知道语法吗?如何在此处添加extraClasses?

测试1(失败)

这失败,并显示错误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。

最佳答案

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

#setExtraClasses接受String参数,然后尝试使用逗号分隔符将其拆分。因此,尝试传递类似

<extraClasses>com.test.Class1,com.test.Class2</extraClasses>

编辑

这在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'属性。

08-18 10:31