我想在生成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。
答案 0 :(得分:1)
这是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'属性。
答案 1 :(得分:0)
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>