Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to generate classes from wsdl using Maven and wsimport?

Tags:

maven

wsimport

When I attempt to run "mvn generate-sources" this is my output :

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. [INFO] Scanning for projects... [INFO]                                                                          [INFO] ------------------------------------------------------------------------ [INFO] Building gensourcesfromwsdl 0.0.1-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 0.104s [INFO] Finished at: Tue Aug 20 15:41:10 BST 2013 [INFO] Final Memory: 2M/15M [INFO] ------------------------------------------------------------------------ 

I do not receive any errors but there are no java classes generated from the wsdl file.

Here is my pom.xml file that I'm running the plugin against :

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">     <modelVersion>4.0.0</modelVersion>     <groupId>gensourcesfromwsdl</groupId>     <artifactId>gensourcesfromwsdl</artifactId>     <version>0.0.1-SNAPSHOT</version>      <build>         <pluginManagement>             <plugins>                 <plugin>                     <groupId>org.codehaus.mojo</groupId>                     <artifactId>jaxws-maven-plugin</artifactId>                     <version>1.12</version>                     <executions>                         <execution>                             <goals>                                 <goal>wsimport</goal>                             </goals>                             <configuration>                                 <wsdlLocation>http://mysite/firstwsdl.asmx?wsdl</wsdlLocation>                                 <packageName>com</packageName>                             </configuration>                         </execution>                     </executions>                 </plugin>             </plugins>         </pluginManagement>     </build>  </project> 

What am I doing wrong ? The package com exists in the project 'gensourcesfromwsdl' and the wsdl location is valid.

When I run wsimport via the command line : >wsimport -keep -verbose http://mysite/firstwsdl.asmx?wsdl the class is generated.

like image 346
blue-sky Avatar asked Aug 20 '13 14:08

blue-sky


1 Answers

To generate classes from WSDL, all you need is build-helper-maven-plugin and jaxws-maven-plugin in your pom.xml
Make sure you have placed wsdl under folder src/main/resources/wsdl and corresponding schema in src/main/resources/schema, run command "mvn generate-sources" from Project root directory.

C:/Project root directory > mvn generate-sources 

generated java classes can be located under folder

target/generated/src/main/java/com/raps/code/generate/ws. 

pom.xml snippet

<plugin>     <groupId>org.codehaus.mojo</groupId>     <artifactId>build-helper-maven-plugin</artifactId>     <version>1.9</version>     <executions>         <execution>             <id>add-source</id>             <phase>generate-sources</phase>             <goals><goal>add-source</goal></goals>             <configuration>                 <sources>                     <source>${project.build.directory}/generated/src/main/java</source>                 </sources>             </configuration>         </execution>     </executions> </plugin>  <plugin>     <groupId>org.codehaus.mojo</groupId>     <artifactId>jaxws-maven-plugin</artifactId>     <version>1.12</version>     <configuration>         <wsdlDirectory>${project.basedir}/src/main/resources/wsdl</wsdlDirectory>         <packageName>com.raps.code.generate.ws</packageName>         <keep>true</keep>         <sourceDestDir>${project.build.directory}/generated/src/main/java</sourceDestDir>     </configuration>     <executions>         <execution>              <id>myImport</id>             <goals><goal>wsimport</goal></goals>         </execution>     </executions> </plugin> 
like image 143
Prahallad Kadiri Avatar answered Sep 20 '22 01:09

Prahallad Kadiri