apache cxf-codegen-plugin wsdl2java相对wsdlLocation

时间:2016-10-04 23:00:47

标签: maven wsdl cxf wsdl2java cxf-codegen-plugin

当我指定每个文件时,我可以使用带有相对wsdlLocation的生成类,例如 <wsdlOptions> <wsdlOption> <wsdl>${basedir}/src/main/resources/sample.wsdl</wsdl> <wsdlLocation>classpath:wsdl/sample.wsdl</wsdlLocation> </wsdlOption> </wsdlOptions>

相反,我想使用<wsdlRoot>所以我不需要指定生成类的每个wsdl。

E.g。

<wsdlRoot>${basedir}/src/main/resources/wsdl</wsdlRoot> <includes> <include>*.wsdl</include> </includes>

这适用于为目录中的每个wsdl生成类,但是,生成的类中的wsdlLocation是wsdl在我的机器上的绝对路径。我想要一个相对路径,所以代码更便携。使用wsdlRoot时是否可以指定相对wsdlLocation?

谢谢

1 个答案:

答案 0 :(得分:0)

您可以指定一个附加选项-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