<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.11.1 at 2022-06-07 
 | 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="20220607" />
    <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: 2022-06-07<span class="divider">|</span>
</li>
          <li id="projectVersion">Version: 1.8.1<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="../../../../../../../../../../../../scm:git:https:/gitbox.apache.org/repos/asf/axis-site.git/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" >
<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></section><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 <code>target/generated-resources/java2wsdl/service.xml</code>. The Java class is given by the configuration element <code>className</code> above.</p>
<p>See the detailed documentation on <a href="#configuration.html">properties</a> for how to configure the goal.</p></section>
        </div>
      </div>
    </div>
    <hr/>
    <footer>
      <div class="container-fluid">
        <div class="row-fluid">
            <p>Copyright &copy;2004&#x2013;2022
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
All rights reserved.</p>
        </div>
        </div>
    </footer>
    </body>
</html>
