Search code examples
javamavenwsdlcxfwsdl2java

Custom package names cxf-codegen-plugin


Imagine this scenario.

I have a wsdl file with namespace a/b/c and it imports another wsdl whose namespace is m/n/o. Unfortunately, both of them have same ComplexTypes XYZ defined in them. Now, when I use cxf-codegen-plugin to generate Java code and use custom package name "com.qsrs.uvw", only one class is retained in the final code that is generated. Can someone help me out here?


Solution

  • If you want to generate package depending on the namespace here is the solution:

    <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>
    

    This <extraarg>http://your.namespace2/services2/=your.package2</extraarg> will map your namespace with the package you want.