16

I am using a maven script to generate the Java code I need to communicate with a WCF service. I have gotten communication working and am ready to integrate my maven script, and the code it generates, with the rest of the java code from the project.

However, I can't get maven to generate the code with the correct package name I want. From what I've read online I should be using the tag, and I've seen two possible places where this goes. I've included the segment of the script I think these need to go in, and both of them there. However, these tags affect nothing and the code generates just as it did without them

        <plugin>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-codegen-plugin</artifactId>
            <version>${cxf.version}</version>
            <configuration>
                        <packageName>com.name.server.cxf</packageName>                      
                    <sourceRoot>src/com/server/cxf</sourceRoot>
                        <wsdlOptions>
                            <wsdlOption>
                                <wsdl>src/com/server/cxf/code-generation/service.xml</wsdl>
                                <bindingFiles>
                                    <bindingFile>src/com/server/cxf/code-generation/javabindings.xml</bindingFile>
                                </bindingFiles> 
                                <extraargs>
                                    <extraarg>-validate</extraarg>
                                    <extraarg>-client</extraarg>
                                    <extraarg>-verbose</extraarg>
                                    <extraarg>-xjc-verbose</extraarg>
                                </extraargs>
                            </wsdlOption>
                        </wsdlOptions>
                        <verbose />
                    </configuration>
            <executions>
                <execution>
                    <id>generate-sources</id>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>wsdl2java</goal>
                    </goals>
                    <configuration>
                        <packageName>com.name.server.cxf</packageName>      
                    </configuration>
                </execution>
            </executions>
        </plugin>

Perhaps I am using the wrong tag, or perhaps it is in the wrong place?

ronnyfm
  • 1,973
  • 25
  • 31
crdzoba
  • 651
  • 1
  • 7
  • 20

3 Answers3

26

Add <extraarg>-p</extraarg><extraarg>com.name.server.cxf</extraarg> to your <extraargs> section inside the <wsdlOption> tag. The following (slightly different version) works for me.

       <plugin>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-codegen-plugin</artifactId>
            <version>${cxf.version}</version>
            <executions>
                <execution>
                    <id>generate-sources</id>
                    <phase>generate-sources</phase>
                    <configuration>
                        <wsdlOptions>
                            <wsdlOption>
                                <wsdl>src/com/server/cxf/code-generation/service.xml</wsdl>
                                <bindingFiles>
                                    <bindingFile>src/com/server/cxf/code-generation/javabindings.xml</bindingFile>
                                </bindingFiles>
                                <extraargs>
                                    <extraarg>-validate</extraarg>
                                    <extraarg>-client</extraarg>
                                    <extraarg>-verbose</extraarg>
                                    <extraarg>-xjc-verbose</extraarg>
                                    <extraarg>-p</extraarg>
                                    <extraarg>com.name.server.cxf</extraarg>
                                </extraargs>
                            </wsdlOption>
                        </wsdlOptions>
                    </configuration>
                    <goals>
                        <goal>wsdl2java</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

Alternatively, create a file service-options in src/com/server/cxf/code-generation/ with the content -p com.name.server.cxf

aliasmrchips
  • 949
  • 9
  • 8
  • Unfortunately neither of those seemed to have any affect at all... Just to be sure, the service-options file needs no extension? – crdzoba Mar 21 '12 at 19:38
  • Yes, no extension. I believe the format is -options where you have serviceName.wsdl – aliasmrchips Mar 21 '12 at 20:13
  • 2
    The first time I tried I had the -p and the com.name.server.cxf enclosed in tags on the same line... That may have been that issue. I got an error when I did it again, but then I added -autoNameResolution below the two tags you suggested and things seem to work now! Thanks so much! – crdzoba Mar 21 '12 at 20:19
  • you can use packagenames as explained here: http://stackoverflow.com/a/27717944/149956 – rochb Apr 13 '17 at 07:59
2

This works very well for me:

<wsdlOption>
                                <wsdl>src/main/resources/wsdl/my_wsdl.wsdl</wsdl>
                                <extraargs>
                                    <extraarg>-p</extraarg>
                                    <extraarg>http://services.demo.es/=com.my.package.demo1</extraarg>
                                    <extraarg>-p</extraarg>
                                    <extraarg>http://tempuri.org/=com.my.package.demo2</extraarg>
                                    <extraarg>-exsh</extraarg>
                                    <extraarg>true</extraarg>
                                    <extraarg>-client</extraarg>
                                    <extraarg>-wsdlLocation</extraarg>
                                    <extraarg></extraarg>
                                </extraargs>
                            </wsdlOption>
rresino
  • 1,617
  • 1
  • 11
  • 8
0

The above solution with

<extraarg>-p</extraarg>
<extraarg>com.name.server.cxf</extraarg>

Is changing package name of generated source under one single package ,because of which ObjectFactory classes are getting override.I need like package structure as it as based on wsld. Along with addition package.

example java classes are generated as com.service.name.mypackage.a,com.service.name.mypackage.b,com.service.name.mypackage.c

V.R.Manivannan
  • 21
  • 2
  • 10