<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.11.1 at 2022-07-14 
 | 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="Date-Revision-yyyymmdd" content="20220714" />
    <meta http-equiv="Content-Language" content="en" />
    <title>axis2-xsd2java-maven-plugin &#x2013; Usage</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://www.apache.org/" id="bannerLeft"><img src="http://www.apache.org/images/asf_logo_wide.png"  alt="Apache Axis2"/></a></div>
        <div class="pull-right"><a href="../../../" id="bannerRight"><img src="../../../images/axis.jpg" /></a></div>
        <div class="clear"><hr/></div>
      </div>

      <div id="breadcrumbs">
        <ul class="breadcrumb">
        <li id="publishDate">Last Published: 2022-07-14<span class="divider">|</span>
</li>
          <li id="projectVersion">Version: 1.8.2<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="axis2-xsd2java-maven-plugin">axis2-xsd2java-maven-plugin</a><span class="divider">/</span></li>
    <li class="active ">Usage</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="index.html" title="About"><span class="none"></span>About</a>  </li>
    <li class="active"><a href="#"><span class="none"></span>Usage</a>
  </li>
    <li><a href="plugin-info.html" title="Plugin Documentation"><span class="icon-chevron-down"></span>Plugin Documentation</a>
      <ul class="nav nav-list">
    <li><a href="generate-sources-mojo.html" title="generate-sources"><span class="none"></span>generate-sources</a>  </li>
    <li><a href="generate-test-sources-mojo.html" title="generate-test-sources"><span class="none"></span>generate-test-sources</a>  </li>
      </ul>
  </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" >
<!--
  ~ 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.
  -->
<section>
<h2><a name="Usage"></a>Usage</h2>
<p>axis2-xsd2java-maven-plugin offers two goals: <code>generate-sources</code> and <code>generate-test-sources</code>.
Both read one or more XSD files and generate the corresponding ADB beans, but they differ in the phases in which they
expect to be executed. Use <code>generate-sources</code> if the generated classes should become part of the
artifact produced by the Maven module; use <code>generate-test-sources</code> if the generated code is only
used by the unit tests.</p>
<p>To run the plugin, add the following section to your POM:</p>

<div class="source"><pre class="prettyprint"><code>&lt;build&gt;
  &lt;plugins&gt;
    &lt;plugin&gt;
      &lt;groupId&gt;org.apache.axis2.maven2&lt;/groupId&gt;
      &lt;artifactId&gt;axis2-xsd2java-maven-plugin&lt;/artifactId&gt;
      &lt;executions&gt;
        &lt;execution&gt;
          &lt;goals&gt;
            &lt;goal&gt;generate-sources&lt;/goal&gt;
          &lt;/goals&gt;
        &lt;/execution&gt;
        &lt;configuration&gt;
          &lt;xsdFiles&gt;
            &lt;xsdFile&gt;src/main/resources/xsd/attribute.xsd&lt;/xsdFile&gt;
          &lt;/xsdFiles&gt;
          &lt;namespaceMappings&gt;
            &lt;namespaceMapping&gt;
              &lt;uri&gt;http://www.example.org/schema/test&lt;/uri&gt;
              &lt;packageName&gt;org.example.schema.test&lt;/packageName&gt;
            &lt;/namespaceMapping&gt;
          &lt;/namespaceMappings&gt;
        &lt;/configuration&gt;
      &lt;/executions&gt;
    &lt;/plugin&gt;
  &lt;/plugins&gt;
&lt;/build&gt;
</code></pre></div>
<p>The plugin will be invoked automatically in the generate-sources
phase.</p>
<p>It reads the specified XSD files and creates the matching Axis2 ADB Java bean classes.  The mapping from
XSD target-namespaces to Java packages is specified with the <code>namespaceMappings</code> configuration element above.</p>
<p>See the detailed documentation on <a href="generate-sources-mojo.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>