<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.7.4 at 2018-05-19 
 | Rendered using Apache Maven Fluido Skin 1.6
-->
<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="author" content="Jochen Wiedmann
jochen.wiedmann@gmail.com" />
    <meta name="Date-Revision-yyyymmdd" content="20180519" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Maven Axis 2 Java2WSDL Plugin &#x2013; Maven 2 Java2WSDL Plugin: configuration examples</title>
    <link rel="stylesheet" href="./css/apache-maven-fluido-1.6.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.6.min.js"></script>
      </head>
    <body class="topBarDisabled">
      <div class="container-fluid">
      <div id="banner">
        <div class="pull-left"><a href="http://maven.apache.org/" id="bannerLeft"><img src="http://maven.apache.org/images/apache-maven-project.png"  alt="Maven Axis 2 Java2WSDL Plugin"/></a></div>
        <div class="pull-right"><div id="bannerRight"><img src="http://maven.apache.org/images/maven-small.gif" /></div>
</div>
        <div class="clear"><hr/></div>
      </div>

      <div id="breadcrumbs">
        <ul class="breadcrumb">
        <li id="publishDate">Last Published: 2018-05-19<span class="divider">|</span>
</li>
          <li id="projectVersion">Version: 1.7.8<span class="divider">|</span></li>
        <li class=""><a href="http://www.apache.org" class="externalLink" title="Apache">Apache</a><span class="divider">/</span></li>
      <li class=""><a href="../../../index.html" title="Axis2/Java">Axis2/Java</a><span class="divider">/</span></li>
      <li class=""><a href="index.html" title="Maven Axis 2 Java2WSDL Plugin">Maven Axis 2 Java2WSDL Plugin</a><span class="divider">/</span></li>
    <li class="active ">Maven 2 Java2WSDL Plugin: configuration examples</li>
      <li class="pull-right"><span class="divider">|</span>
<a href="http://maven.apache.org/maven2/" class="externalLink" title="Maven 2">Maven 2</a></li>
      <li class="pull-right"><span class="divider">|</span>
<a href="http://ws.apache.org/axis2/" class="externalLink" title="Axis 2">Axis 2</a></li>
      <li class="pull-right"><span class="divider">|</span>
<a href="http://ws.apache.org/" class="externalLink" title="Webservices">Webservices</a></li>
      <li class="pull-right"><a href="http://www.apache.org/" class="externalLink" title="Apache">Apache</a></li>
        </ul>
      </div>
      <div class="row-fluid">
        <div id="leftColumn" class="span2">
          <div class="well sidebar-nav">
<ul class="nav nav-list">
          <li class="nav-header">Overview</li>
    <li><a href="introduction.html" title="Introduction"><span class="none"></span>Introduction</a>  </li>
    <li><a href="howto.html" title="How to Use"><span class="none"></span>How to Use</a>  </li>
    <li><a href="configuration.html" title="Configuration"><span class="none"></span>Configuration</a>  </li>
          <li class="nav-header">Apache</li>
    <li><a href="http://www.apache.org/licenses/LICENSE-2.0.html" class="externalLink" title="License"><span class="none"></span>License</a>  </li>
    <li><a href="http://www.apache.org/foundation/sponsorship.html" class="externalLink" title="Sponsorship"><span class="none"></span>Sponsorship</a>  </li>
    <li><a href="http://www.apache.org/foundation/thanks.html" class="externalLink" title="Thanks"><span class="none"></span>Thanks</a>  </li>
    <li><a href="http://www.apache.org/security/" class="externalLink" title="Security"><span class="none"></span>Security</a>  </li>
  </ul>
          <hr />
          <div id="poweredBy">
              <div class="clear"></div>
              <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="span10" >
<div class="section">
<h2><a name="Goals"></a>Goals</h2>
<p>The Java2WSDL plugin offers a single goal:</p>
<ul>
<li>java2wsdl (default): Reads a java class and generates a WSDL for invoking the classes methods as a web service.</li></ul>
<p>To run the plugin, add the following section to your POM:</p>
<div>
<pre>  &lt;build&gt;
    &lt;plugins&gt;
      &lt;plugin&gt;
        &lt;groupId&gt;org.apache.axis2.maven2&lt;/groupId&gt;
        &lt;artifactId&gt;axis2-java2wsdl-maven-plugin&lt;/artifactId&gt;
        &lt;executions&gt;
          &lt;execution&gt;
            &lt;goals&gt;
              &lt;goal&gt;java2wsdl&lt;/goal&gt;
            &lt;/goals&gt;
          &lt;/execution&gt;
          &lt;configuration&gt;
            &lt;className&gt;com.foo.myservice.MyHandler&lt;/className&gt;
          &lt;/configuration&gt;
        &lt;/executions&gt;
      &lt;/plugin&gt;
    &lt;/plugins&gt;
  &lt;/build&gt;</pre></div>
<p>The plugin will be invoked automatically in the generate-resources phase. You can also invoke it directly from the command line by running the command</p>
<div class="source"><pre class="prettyprint">  mvn java2wsdl:java2wsdl</pre></div></div>
<div class="section">
<h2><a name="The_Java2WSDL_Goal"></a>The Java2WSDL Goal</h2>
<p>By default, the plugin reads the given Java class and creates a file <tt>target/generated-resources/java2wsdl/service.xml</tt>. The Java class is given by the configuration element <tt>className</tt> above.</p>
<p>See the detailed documentation on <a href="#configuration.html">properties</a> for how to configure the goal.</p></div>
        </div>
      </div>
    </div>
    <hr/>
    <footer>
      <div class="container-fluid">
        <div class="row-fluid">
            <p>Copyright &copy;2004&#x2013;2018
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
All rights reserved.</p>
        </div>
        </div>
    </footer>
    </body>
</html>