<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia at 2015-07-03
 | Rendered using Apache Maven Fluido Skin 1.3.0
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="Date-Revision-yyyymmdd" content="20150703" />
    <meta http-equiv="Content-Language" content="en" />
    <title>java2wsdl-maven-plugin &#x2013; java2wsdl:deploy</title>
    <link rel="stylesheet" href="./css/apache-maven-fluido-1.3.0.min.css" />
    <link rel="stylesheet" href="./css/site.css" />
    <link rel="stylesheet" href="./css/print.css" media="print" />

      
    <script type="text/javascript" src="./js/apache-maven-fluido-1.3.0.min.js"></script>

    
            </head>
        <body class="topBarDisabled">
          
                
                    
    
        <div class="container-fluid">
          <div id="banner">
        <div class="pull-left">
                                <div id="bannerLeft">
                <h2>java2wsdl-maven-plugin</h2>
                </div>
                      </div>
        <div class="pull-right">                                <a href="../.." id="bannerRight">
                                                                                                <img src="../../images/axis-small.png"  alt="Apache Axis"/>
                </a>
      </div>
        <div class="clear"><hr/></div>
      </div>

      <div id="breadcrumbs">
        <ul class="breadcrumb">
                
                    
                              <li class="">
                    <a href="http://www.apache.org/" class="externalLink" title="Apache">
        Apache</a>
        </li>
      <li class="divider ">/</li>
            <li class="">
                    <a href="../../../../" title="Axis">
        Axis</a>
        </li>
      <li class="divider ">/</li>
            <li class="">
                    <a href="../../../" title="Axis 1.x">
        Axis 1.x</a>
        </li>
      <li class="divider ">/</li>
            <li class="">
                    <a href="../../" title="Java">
        Java</a>
        </li>
      <li class="divider ">/</li>
            <li class="">
                    <a href="../" title="Maven plugins">
        Maven plugins</a>
        </li>
      <li class="divider ">/</li>
                <li class="">
                    <a href="./" title="java2wsdl-maven-plugin">
        java2wsdl-maven-plugin</a>
        </li>
      <li class="divider ">/</li>
        <li class="">java2wsdl:deploy</li>
        
                
                    
                  <li id="publishDate" class="pull-right">Last Published: 2015-07-03</li> <li class="divider pull-right">|</li>
              <li id="projectVersion" class="pull-right">Version: 1.4.1-SNAPSHOT</li>
            
                            </ul>
      </div>

            
      <div class="row-fluid">
        <div id="leftColumn" class="span3">
          <div class="well sidebar-nav">
                
                    
                <ul class="nav nav-list">
                    <li class="nav-header">Overview</li>
                                
      <li>
    
                          <a href="index.html" title="Introduction">
          <i class="none"></i>
        Introduction</a>
            </li>
                  
      <li>
    
                          <a href="plugin-info.html" title="Goals">
          <i class="none"></i>
        Goals</a>
            </li>
                              <li class="nav-header">Apache</li>
                                
      <li>
    
                          <a href="http://www.apache.org/licenses/LICENSE-2.0.html" class="externalLink" title="License">
          <i class="none"></i>
        License</a>
            </li>
                  
      <li>
    
                          <a href="http://www.apache.org/foundation/sponsorship.html" class="externalLink" title="Sponsorship">
          <i class="none"></i>
        Sponsorship</a>
            </li>
                  
      <li>
    
                          <a href="http://www.apache.org/foundation/thanks.html" class="externalLink" title="Thanks">
          <i class="none"></i>
        Thanks</a>
            </li>
                  
      <li>
    
                          <a href="http://www.apache.org/security/" class="externalLink" title="Security">
          <i class="none"></i>
        Security</a>
            </li>
            </ul>
                
                    
                            <form id="search-form" action="http://www.google.com/search" method="get" >
    
  <input value="ws.apache.org/axis/java" name="sitesearch" type="hidden"/>
  <input class="search-query" name="q" id="query" type="text" />
</form>
<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=search-form"></script>
          
          <hr class="divider" />

           <div id="poweredBy">
                            <div class="clear"></div>
                            <div class="clear"></div>
                            <div class="clear"></div>
                             <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
        <img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
      </a>
                  </div>
          </div>
        </div>
        
                
        <div id="bodyColumn"  class="span9" >
                                  
            
  
    <div class="section">
<h2><a name="java2wsdl:deploy"></a>java2wsdl:deploy</h2>
      
<p><b>Full name</b>:</p>
      
<p>org.apache.axis:java2wsdl-maven-plugin:1.4.1-SNAPSHOT:deploy</p>
      
<p><b>Description</b>:</p>
      
<div>Generate deployment artifacts (WSDD files and helper classes) for a
code first Web service. The goal will also compile the generated
classes so that it can be used on a service that is built in the
same project.</div>
      
<p><b>Attributes</b>:</p>
      
<ul>
        
<li>Requires a Maven project to be executed.</li>
        
<li>Requires dependency resolution of artifacts in scope: <tt>compile</tt>.</li>
        
<li>Binds by default to the lifecycle phase: <tt>process-classes</tt>.</li>
      </ul>
      
<div class="section">
<h3><a name="Required_Parameters"></a>Required Parameters</h3>
        
<table class="table table-striped" border="0">
          
<tr class="a">
            
<th>Name</th>
            
<th>Type</th>
            
<th>Since</th>
            
<th>Description</th>
          </tr>
          
<tr class="b">
            
<td><b><a href="#className">className</a></b></td>
            
<td><tt>String</tt></td>
            
<td><tt>-</tt></td>
            
<td>The name of the class to generate a WSDL for. The class must be on
the classpath.<br /></td>
          </tr>
          
<tr class="a">
            
<td><b><a href="#location">location</a></b></td>
            
<td><tt>String</tt></td>
            
<td><tt>-</tt></td>
            
<td>The url of the location of the service. The name after the last
slash or backslash is the name of the service port (unless
overridden by the -s option). The service port address location
attribute is assigned the specified value.<br /></td>
          </tr>
          
<tr class="b">
            
<td><b><a href="#namespace">namespace</a></b></td>
            
<td><tt>String</tt></td>
            
<td><tt>-</tt></td>
            
<td>The target namespace for the interface.<br /></td>
          </tr>
          
<tr class="a">
            
<td><b><a href="#output">output</a></b></td>
            
<td><tt>File</tt></td>
            
<td><tt>-</tt></td>
            
<td>The name of the output WSDL file.<br /></td>
          </tr>
          
<tr class="b">
            
<td><b><a href="#sourceOutputDirectory">sourceOutputDirectory</a></b></td>
            
<td><tt>File</tt></td>
            
<td><tt>-</tt></td>
            
<td>The directory where the source code of the generated Java artifacts
(helper classes) is placed.<br /><b>Default value is</b>: <tt>${project.build.directory}/generated-sources/deploy</tt>.</td>
          </tr>
        </table>
      </div>
      
<div class="section">
<h3><a name="Optional_Parameters"></a>Optional Parameters</h3>
        
<table class="table table-striped" border="0">
          
<tr class="a">
            
<th>Name</th>
            
<th>Type</th>
            
<th>Since</th>
            
<th>Description</th>
          </tr>
          
<tr class="b">
            
<td><b><a href="#extraClasses">extraClasses</a></b></td>
            
<td><tt>String[]</tt></td>
            
<td><tt>-</tt></td>
            
<td>A list of classes to include in the schema generation.<br /></td>
          </tr>
          
<tr class="a">
            
<td><b><a href="#mappings">mappings</a></b></td>
            
<td><tt>Mapping[]</tt></td>
            
<td><tt>-</tt></td>
            
<td>Mappings of packages to namespaces.<br /></td>
          </tr>
          
<tr class="b">
            
<td><b><a href="#portTypeName">portTypeName</a></b></td>
            
<td><tt>String</tt></td>
            
<td><tt>-</tt></td>
            
<td>Indicates the name to use use for the portType element. If not
specified, the class-of-portType name is used.<br /></td>
          </tr>
          
<tr class="a">
            
<td><b><a href="#style">style</a></b></td>
            
<td><tt>String</tt></td>
            
<td><tt>-</tt></td>
            
<td>The style of the WSDL document: RPC, DOCUMENT or WRAPPED. If RPC, a
rpc/encoded wsdl is generated. If DOCUMENT, a document/literal wsdl
is generated. If WRAPPED, a document/literal wsdl is generated
using the wrapped approach.<br /></td>
          </tr>
          
<tr class="b">
            
<td><b><a href="#use">use</a></b></td>
            
<td><tt>String</tt></td>
            
<td><tt>-</tt></td>
            
<td>Set the use option<br /></td>
          </tr>
        </table>
      </div>
      
<div class="section">
<h3><a name="Parameter_Details"></a>Parameter Details</h3>
        
<p><b><a name="className">className</a>:</b></p>
        
<div>The name of the class to generate a WSDL for. The class must be on
the classpath.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String</tt></li>
          
<li><b>Required</b>: <tt>Yes</tt></li>
        </ul><hr />
<p><b><a name="extraClasses">extraClasses</a>:</b></p>
        
<div>A list of classes to include in the schema generation.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String[]</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
        </ul><hr />
<p><b><a name="location">location</a>:</b></p>
        
<div>The url of the location of the service. The name after the last
slash or backslash is the name of the service port (unless
overridden by the -s option). The service port address location
attribute is assigned the specified value.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String</tt></li>
          
<li><b>Required</b>: <tt>Yes</tt></li>
        </ul><hr />
<p><b><a name="mappings">mappings</a>:</b></p>
        
<div>Mappings of packages to namespaces.</div>
        
<ul>
          
<li><b>Type</b>: <tt>org.apache.axis.tools.maven.shared.nsmap.Mapping[]</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
        </ul><hr />
<p><b><a name="namespace">namespace</a>:</b></p>
        
<div>The target namespace for the interface.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String</tt></li>
          
<li><b>Required</b>: <tt>Yes</tt></li>
        </ul><hr />
<p><b><a name="output">output</a>:</b></p>
        
<div>The name of the output WSDL file.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.io.File</tt></li>
          
<li><b>Required</b>: <tt>Yes</tt></li>
        </ul><hr />
<p><b><a name="portTypeName">portTypeName</a>:</b></p>
        
<div>Indicates the name to use use for the portType element. If not
specified, the class-of-portType name is used.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
        </ul><hr />
<p><b><a name="sourceOutputDirectory">sourceOutputDirectory</a>:</b></p>
        
<div>The directory where the source code of the generated Java artifacts
(helper classes) is placed.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.io.File</tt></li>
          
<li><b>Required</b>: <tt>Yes</tt></li>
          
<li><b>Default</b>: <tt>${project.build.directory}/generated-sources/deploy</tt></li>
        </ul><hr />
<p><b><a name="style">style</a>:</b></p>
        
<div>The style of the WSDL document: RPC, DOCUMENT or WRAPPED. If RPC, a
rpc/encoded wsdl is generated. If DOCUMENT, a document/literal wsdl
is generated. If WRAPPED, a document/literal wsdl is generated
using the wrapped approach.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
        </ul><hr />
<p><b><a name="use">use</a>:</b></p>
        
<div>Set the use option</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
        </ul>
      </div>
    </div>
  

                  </div>
            </div>
          </div>

    <hr/>

    <footer>
            <div class="container-fluid">
              <div class="row span12">Copyright &copy;                    2000-2015
                        <a href="http://www.apache.org/">The Apache Software Foundation</a>.
            All Rights Reserved.      
                    
      </div>

        
        
                </div>
    </footer>
  </body>
</html>