自定义包名称cxf-codegen-plugin

Gop*_*pal 16 java wsdl cxf wsdl2java maven

想象一下这个场景.

我有一个带有命名空间a/b/c的wsdl文件,它导入另一个命名空间为m/n/o的wsdl.不幸的是,它们都在其中定义了相同的ComplexTypes XYZ.现在,当我使用cxf-codegen-plugin生成Java代码并使用自定义包名"com.qsrs.uvw"时,在生成的最终代码中只保留一个类.有人可以帮帮我吗?

Pau*_*nis 51

如果你想根据命名空间生成包,那么解决方案是:

<plugin>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-codegen-plugin</artifactId>
    <version>2.6.0</version>
    <executions>
        <execution>
            <id>generate-sources</id>
            <phase>generate-sources</phase>
            <configuration>
                <sourceRoot>${basedir}/target/generated/src/main/java</sourceRoot>
                <wsdlOptions>
                    <wsdlOption>
                        <wsdl>yourWsdl.wsld</wsdl>
                        <extraargs>
                            <extraarg>-client</extraarg>
                            <extraarg>-verbose</extraarg>
                            <extraarg>-p</extraarg>
                            <extraarg>http://your.namespace/services/=your.package</extraarg>
                            <extraarg>-p</extraarg>
                            <extraarg>http://your.namespace2/services2/=your.package2</extraarg>
                        </extraargs>
                    </wsdlOption>
                </wsdlOptions>
            </configuration>
            <goals>
                <goal>wsdl2java</goal>
            </goals>
        </execution>
    </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

<extraarg>http://your.namespace2/services2/=your.package2</extraarg>会将您的命名空间映射到您想要的包.

  • 谢谢你的回应.如果可以为生成的所有软件包指定前缀,请告诉我吗? (2认同)
  • 最佳方案.几乎担心它什么时候不起作用,但这是因为在`=`之前的`/`.模式是`namespace = desired_pa​​ckage` (2认同)