<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- Generated by Apache Maven Doxia Site Renderer 1.3 at Jun 28, 2015 -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Apache Axis2 - 


Maven2 WSDL2Code Plug-in Guide</title>
    <style type="text/css" media="all">
      @import url("../../css/maven-base.css");
      @import url("../../css/maven-theme.css");
      @import url("../../css/site.css");
    </style>
    <link rel="stylesheet" href="../../css/print.css" type="text/css" media="print" />
    <meta name="Date-Revision-yyyymmdd" content="20150628" />
    <meta http-equiv="Content-Language" content="en" />
        <meta name="generator" content="HTML Tidy for Windows (vers 14 June 2007), see www.w3.org" /><meta http-equiv="content-type" content="" />
        </head>
  <body class="composite">
    <div id="banner">
                        <a href="http://www.apache.org/" id="bannerLeft">
                                        <img src="http://www.apache.org/images/asf_logo_wide.png" alt="Apache Axis2" />
                </a>
                                            <a href="../.././" id="bannerRight">
                                                <img src="../../images/axis.jpg" alt="Apache Axis2" />
                </a>
            <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="breadcrumbs">
            
            
                <div class="xleft">
        <span id="publishDate">Last Published: 2015-06-28</span>
                  &nbsp;| <span id="projectVersion">Version: 1.6.3</span>
                      </div>
            <div class="xright">                    <a href="../../index.html" title="Axis2/Java">Axis2/Java</a>
            |
                        <a href="http://www.apache.org" class="externalLink" title="Apache">Apache</a>
              
            
      </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="leftColumn">
      <div id="navcolumn">
             
            
                                <h5>Axis2/Java</h5>
                  <ul>
                  <li class="none">
                          <a href="../../index.html" title="Home">Home</a>
            </li>
          </ul>
                       <h5>Downloads</h5>
                  <ul>
                  <li class="none">
                          <a href="../../download.cgi" title="Releases">Releases</a>
            </li>
                  <li class="none">
                          <a href="../../modules/index.html" title="Modules">Modules</a>
            </li>
                  <li class="none">
                          <a href="../../tools/index.html" title="Tools">Tools</a>
            </li>
          </ul>
                       <h5>Documentation</h5>
                  <ul>
                  <li class="none">
                          <a href="../../docs/toc.html" title="Table of Contents">Table of Contents</a>
            </li>
                  <li class="none">
                          <a href="../../docs/installationguide.html" title="Installation Guide">Installation Guide</a>
            </li>
                  <li class="none">
                          <a href="../../docs/quickstartguide.html" title="QuickStart Guide">QuickStart Guide</a>
            </li>
                  <li class="none">
                          <a href="../../docs/userguide.html" title="User Guide">User Guide</a>
            </li>
                  <li class="none">
                          <a href="../../docs/jaxws-guide.html" title="JAXWS Guide">JAXWS Guide</a>
            </li>
                  <li class="none">
                          <a href="../../docs/pojoguide.html" title="POJO Guide">POJO Guide</a>
            </li>
                  <li class="none">
                          <a href="../../docs/spring.html" title="Spring Guide">Spring Guide</a>
            </li>
                  <li class="none">
                          <a href="../../docs/webadminguide.html" title="Web Administrator's Guide">Web Administrator's Guide</a>
            </li>
                  <li class="none">
                          <a href="../../docs/migration.html" title="Migration Guide (from Axis1)">Migration Guide (from Axis1)</a>
            </li>
          </ul>
                       <h5>Resources</h5>
                  <ul>
                  <li class="none">
                          <a href="../../faq.html" title="FAQ">FAQ</a>
            </li>
                  <li class="none">
                          <a href="../../articles.html" title="Articles">Articles</a>
            </li>
                  <li class="none">
                          <a href="http://wiki.apache.org/ws/FrontPage/Axis2/" class="externalLink" title="Wiki">Wiki</a>
            </li>
                  <li class="none">
                          <a href="../../refLib.html" title="Reference Library">Reference Library</a>
            </li>
                  <li class="none">
                          <a href="../../api/index.html" title="Online Java Docs">Online Java Docs</a>
            </li>
          </ul>
                       <h5>Get Involved</h5>
                  <ul>
                  <li class="none">
                          <a href="../../overview.html" title="Overview">Overview</a>
            </li>
                  <li class="none">
                          <a href="../../svn.html" title="Checkout the Source">Checkout the Source</a>
            </li>
                  <li class="none">
                          <a href="../../mail-lists.html" title="Mailing Lists">Mailing Lists</a>
            </li>
                  <li class="none">
                          <a href="../../release-process.html" title="Release Process">Release Process</a>
            </li>
                  <li class="none">
                          <a href="../../guidelines.html" title="Developer Guidelines">Developer Guidelines</a>
            </li>
                  <li class="none">
                          <a href="../../siteHowTo.html" title="Build the Site">Build the Site</a>
            </li>
          </ul>
                       <h5>Project Information</h5>
                  <ul>
                  <li class="none">
                          <a href="../../team-list.html" title="Project Team">Project Team</a>
            </li>
                  <li class="none">
                          <a href="../../issue-tracking.html" title="Issue Tracking">Issue Tracking</a>
            </li>
                  <li class="none">
                          <a href="http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/" class="externalLink" title="Source Code">Source Code</a>
            </li>
                  <li class="none">
                          <a href="../../thanks.html" title="Acknowledgements">Acknowledgements</a>
            </li>
                  <li class="none">
                          <a href="http://www.apache.org/licenses/LICENSE-2.0.html" class="externalLink" title="License">License</a>
            </li>
                  <li class="none">
                          <a href="http://www.apache.org/foundation/sponsorship.html" class="externalLink" title="Sponsorship">Sponsorship</a>
            </li>
                  <li class="none">
                          <a href="http://www.apache.org/foundation/thanks.html" class="externalLink" title="Thanks">Thanks</a>
            </li>
                  <li class="none">
                          <a href="http://www.apache.org/security/" class="externalLink" title="Security">Security</a>
            </li>
          </ul>
                             <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
        <img class="poweredBy" alt="Built by Maven" src="../../images/logos/maven-feather.png" />
      </a>
                   
            
            </div>
    </div>
    <div id="bodyColumn">
      <div id="contentBox">
        <!-- ~ Licensed to the Apache Software Foundation (ASF) under one
  ~ or more contributor license agreements. See the NOTICE file
  ~ distributed with this work for additional information
  ~ regarding copyright ownership. The ASF licenses this file
  ~ to you under the Apache License, Version 2.0 (the
  ~ "License"); you may not use this file except in compliance
  ~ with the License. You may obtain a copy of the License at
  ~
  ~ http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing,
  ~ software distributed under the License is distributed on an
  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  ~ KIND, either express or implied. See the License for the
  ~ specific language governing permissions and limitations
  ~ under the License. --><html xmlns="http://www.w3.org/1999/xhtml">

<h1>Maven2 WSDL2Code Plug-in Guide</h1>
<div class="section"><h2>Introduction<a name="Introduction"></a></h2>
<p>This plugin takes as input a WSDL and generates client and
server stubs for calling or implementing a Web service matching the
WSDL.</p>
<p><a href="../index.html">[Download Plugin Tool]</a></p>
<div class="section"><h2>Goals<a name="Goals"></a></h2>
<p>The WSDl2Code offers a single goal:</p>
<ul>
<li>wsdl2code (default): Reads the WSDL and generates code.</li>
</ul>
<p>To run the plugin, add the following section to your <a class="externalLink" href="http://maven.apache.org/guides/introduction/introduction-to-the-pom.html">
POM</a> (Project Object Model):</p>
<div><pre>
    &lt;build&gt;
        &lt;plugins&gt;
            &lt;plugin&gt;
                &lt;groupId&gt;org.apache.axis2&lt;/groupId&gt;
                &lt;artifactId&gt;axis2-wsdl2code-maven-plugin&lt;/artifactId&gt;
                &lt;version&gt;1.4&lt;/version&gt;
                &lt;executions&gt;
                    &lt;execution&gt;
                        &lt;goals&gt;
                            &lt;goal&gt;wsdl2code&lt;/goal&gt;
                        &lt;/goals&gt;
                        &lt;configuration&gt;
                            &lt;packageName&gt;com.foo.myservice&lt;/packageName&gt;
                            &lt;wsdlFile&gt;src/main/wsdl/myservice.wsdl&lt;/wsdlFile&gt;
                            &lt;databindingName&gt;xmlbeans&lt;/databindingName&gt;
                        &lt;/configuration&gt;
                    &lt;/execution&gt;
                &lt;/executions&gt;
            &lt;/plugin&gt;
        &lt;/plugins&gt;
    &lt;/build&gt;
</pre></div>
Also please add axis2 jars as a dependency 
<div><pre>
    &lt;dependency&gt;
          &lt;groupId&gt;org.apache.axis2&lt;/groupId&gt;
          &lt;artifactId&gt;axis2&lt;/artifactId&gt;
          &lt;version&gt;1.4&lt;/version&gt;
    &lt;/dependency&gt;
</pre></div>
    
<p>The plugin will be invoked automatically in the generate-sources
phase. You can also invoke it directly from the command line by
running the command</p>
<div><pre>
mvn axis2-wsdl2code:wsdl2code
</pre></div>
<div class="section"><h3>The WSDL2Code Goal<a name="The_WSDL2Code_Goal"></a></h3>
<p>By default, the plugin reads the file
<b>src/main/axis2/service.wsdl</b>. Sources for the Java
programming language and the ADB data binding are generated into
<b>target/generated-sources/axis2/wsdl2code</b>. Note the
configuration element <b>packageName</b> above, which
sets the package name, thus a subdirectory.</p>
</div><div class="section"><h2>Configuration<a name="Configuration"></a></h2>
<p>The WSDL2Code goal takes the following parameters as input. All
parameters can be set from the command line by using properties.
For example, the parameter &quot;generateServerSide&quot; may be set using
the property &quot;axis2.wsdl2code.generateServerSide&quot;. If the parameter
isn't set via property or in the POM, then a default value
applies.</p>
<table border="0" class="bodyTable">
<tbody>
<tr class="a" align="center">
<td><b>Parameter Name</b></td>
<td><b>Command Line Property</b></td>
<td><b>Description</b></td>
<td><b>Default Value</b></td>
</tr>
<tr class="b">
<td>databindingName</td>
<td>${axis2.wsdl2code.databindingName}</td>
<td>Data binding framework, which is being used by the generated
sources.</td>
<td>adb</td>
</tr>
<tr class="a">
<td>generateAllClasses</td>
<td>${axis2.wsdl2code.generateAllClasses}</td>
<td>Whether to generate simply all classes. This is only valid in
conjunction with &quot;generateServerSide&quot;.</td>
<td>false</td>
</tr>
<tr class="b">
<td>generateServerSide</td>
<td>${axis2.wsdl2code.generateServerSide}</td>
<td>Whether server side sources are being generated.</td>
<td>false</td>
</tr>
<tr class="a">
<td>generateServerSideInterface</td>
<td>${axis2.wsdl2code.generateServerSideInterface}</td>
<td>Whether to generate the server side interface.</td>
<td>false</td>
</tr>
<tr class="b">
<td>generateServicesXml</td>
<td>${axis2.wsdl2code.generateServicesXml}</td>
<td>Whether a &quot;services.xml&quot; file is being generated.</td>
<td>false</td>
</tr>
<tr class="a">
<td>generateTestcase</td>
<td>${axis2.wsdl2code.generateTestCase}</td>
<td>Whether a test case is being generated.</td>
<td>false</td>
</tr>
<tr class="b">
<td>language</td>
<td>${axis2.wsdl2code.language}</td>
<td>Programming language of the generated sources.</td>
<td>java</td>
</tr>
<tr class="a">
<td>namespaceToPackages</td>
<td>${axis2.wsdl2code.namespaceToPackages}</td>
<td>Map of namespace URI to packages in the format
uri1=package1,uri2=package2,... Using this parameter is
discouraged. In general, you should use the namespaceUris
parameter. However, the latter cannot be set on the command
line.</td>
<td></td>
</tr>
<tr class="b">
<td>namespaceURIs</td>
<td></td>
<td>Map of namespace URI to packages. Example:
&lt;namespaceURIs&gt; &lt;namespaceURI&gt;
&lt;uri&gt;uri1&lt;/uri&gt; &lt;packageName&gt;package1&lt;/packageName&gt;
&lt;/namespaceURI&gt; ........ &lt;/namespaceURI&gt;</td>
<td></td>
</tr>
<tr class="a">
<td>outputDirectory</td>
<td>${axis2.wsdl2code.target}</td>
<td>Target directory, where sources are being
target/generated-sources/axis2/wsdl2code generated.</td>
<td></td>
</tr>
<tr class="b">
<td>packageName</td>
<td>${axis2.wsdl2code.package}</td>
<td>Package name of the generated sources.</td>
<td></td>
</tr>
<tr class="a">
<td>portName</td>
<td>${axis2.wsdl2code.portName}</td>
<td>Port name, for which sources are being generated. By default,
sources are generated for a randomly picked port.</td>
<td></td>
</tr>
    <tr class="b">
    <td>allPorts</td>
    <td>${axis2.wsdl2code.allPorts}</td>
    <td>Set this to true to generate code for all ports.</td>
    <td>false</td>
    </tr>
<tr class="a">
<td>serviceName</td>
<td>${axis2.wsdl2code.serviceName}</td>
<td>Service name, for which sources are being generated. By
default, sources are generated for all services.</td>
<td></td>
</tr>
<tr class="b">
<td>syncMode</td>
<td>${axis2.wsdl2code.syncMode}</td>
<td>Sync mode, for which sources are being generated; either of
&quot;sync&quot;, &quot;async&quot;, or &quot;both&quot; (default).</td>
<td>both</td>
</tr>
<tr class="a">
<td>unpackClasses</td>
<td>${axis2.wsdl2code.unpackClasses}</td>
<td>Whether to unpack classes.</td>
<td></td>
</tr>
<tr class="b">
<td>wsdlFile</td>
<td>${axis2.wsdl2code.wsdl}</td>
<td>Location of the WSDL file, which is read as input</td>
<td>src/main/axis2/service.wsdl</td>
</tr>
<tr class="a">
<td>unwrap</td>
<td>${axis2.wsdl2code.unwrap}</td>
<td>This will select between wrapped and unwrapped during code generation.
Maps to the -uw option of the command line tool.</td>
<td>false</td>
</tr>
</tbody>
</table>

</html>
      </div>
    </div>
    <div class="clear">
      <hr/>
    </div>
    <div id="footer">
      <div class="xright">
              Copyright &#169;                    2004-2015
                        <a href="http://www.apache.org/">The Apache Software Foundation</a>.
            All Rights Reserved.      
            
                  </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
  </body>
</html>
