当我指定每个文件时,我可以使用具有相对 wsdlLocation 的生成类,例如
<wsdlOptions>
<wsdlOption>
<wsdl>${basedir}/src/main/resources/sample.wsdl</wsdl>
<wsdlLocation>classpath:wsdl/sample.wsdl</wsdlLocation>
</wsdlOption>
</wsdlOptions>
相反,我想使用
<wsdlRoot>
,这样我就不需要指定要为其生成类的每个 wsdl。
例如
<wsdlRoot>${basedir}/src/main/resources/wsdl</wsdlRoot>
<includes>
<include>*.wsdl</include>
</includes>
这可以为目录中的每个 wsdl 生成类,但是,生成的类中的 wsdlLocation 是 wsdl 在我的计算机上所在位置的绝对路径。 我想要一个相对路径,这样代码更可移植。 使用 wsdlRoot 时是否可以指定相对的 wsdlLocation?
谢谢你
您可以指定一个带有空值的额外选项
-wsdlLocation
。在生成的 XXX_Service
代码中,它显示 WSDL_LOCATION = null;
。
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<version>3.2.4</version>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<configuration>
<sourceRoot>${basedir}/src/main/java</sourceRoot>
<wsdlRoot>${basedir}/src/main/webapp/WEB-INF/wsdl/</wsdlRoot>
<defaultOptions>
<defaultExcludesNamespace>true</defaultExcludesNamespace>
<extraargs>
<extraarg>-wsdlLocation</extraarg>
<extraarg> </extraarg>
</extraargs>
</defaultOptions>
</configuration>
<goals>
<goal>wsdl2java</goal>
</goals>
</execution>
</executions>
</plugin>
您可以在我之前的 CXF 项目的
pom.xml
中找到类似的摘录:https://github.com/htr3n/loan-approval-portal/blob/master/pom.xml。
以下对我有用:
<includes>
<include>*/*.wsdl</include>
</includes>
<wsdlRoot>${project.basedir}/src/main/wsdl</wsdlRoot>