34.2. WSDL-to-Java Maven Plug-In
Overview
To generate Java stub code from the WSDL contract, you can use either the
ws2java
command-line utility or the cxf-codegen-plugin
Maven plug-in. When using Maven, the plug-in approach is ideal: after you paste the requisite plug-in configuration into your POM file, the WSDL-to-Java code generation step is integrated into your build.
Configure the WSDL-to-Java Maven plug-in
Configuring the WSDL-to-Java Maven plug-in is relatively easy, because most of the default configuration settings can be left as they are. After copying and pasting the sample
plugin
element into your project's POM file, there are just a few basic settings that need to be customized, as follows:
- CXF version—make sure that the plug-in's dependencies are using the latest version of Apache CXF.
- WSDL file location—specify the WSDL file location in the
configuration/wsdlOptions/wsdlOption/wsdl
element. - Location of output—specify the root directory of the generated Java source files in the
configuration/sourceRoot
element.
For example, the following POM fragment shows how to configure the
cxf-codegen-plugin
plug-in to generate Java stub code from the CustomerService.wsdl
WSDL file:
<project ...> ... <parent> <groupId>com.fusesource.byexample.cxf-webinars</groupId> <artifactId>cxf-webinars</artifactId> <version>1.0-SNAPSHOT</version> </parent> <build> <defaultGoal>install</defaultGoal> <plugins> ... <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> <sourceRoot>${basedir}/target/generated-sources/jaxws</sourceRoot> <wsdlOptions> <wsdlOption> <wsdl>${basedir}/../src/main/resources/wsdl/CustomerService.wsdl</wsdl> </wsdlOption> </wsdlOptions> </configuration> <goals> <goal>wsdl2java</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project>
Generated Java source code
With the sample configuration shown here, the generated Java source code is written under the
target/generated-sources/jaxws
directory. Note that the client implementation is dependent on this generated stub code—for example, the client invokes the proxy using the generated CustomerService
SEI.
Add generated source to IDE
If you are using an IDE such as Eclipse or Intellij's IDEA, you need to make sure that the IDE is aware of the generated Java code. For example, in Eclipse it is necessary to add the
target/generated-sources/jaxws
directory to the project as a source code directory.
Compiling the generated code
You must ensure that the generated Java code is compiled and added to the deployment package. By convention, Maven automatically compiles any source files that it finds under the following directory:
BaseDir/target/generated-sources/
Hence, if you configure the output directory as shown in the preceding POM fragment, the generated code is automatically compiled by Maven.
Reference
For full details of how to configure the Java-to-WSDL plug-in, see the Maven cxf-codegen-plugin reference page.