<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.7.4 at 2018-11-16 
 | 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="20181116" />
    <meta http-equiv="Content-Language" content="en" />
    <title>axis2-repo-maven-plugin &#x2013; axis2-repo:create-repository</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: 2018-11-16<span class="divider">|</span>
</li>
          <li id="projectVersion">Version: 1.7.9<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="axis2-repo-maven-plugin">axis2-repo-maven-plugin</a><span class="divider">/</span></li>
    <li class="active ">axis2-repo:create-repository</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><a href="plugin-info.html" title="Plugin Documentation"><span class="icon-chevron-down"></span>Plugin Documentation</a>
      <ul class="nav nav-list">
    <li class="active"><a href="#"><span class="none"></span>create-repository</a>
  </li>
    <li><a href="create-test-repository-mojo.html" title="create-test-repository"><span class="none"></span>create-test-repository</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" >

  
    <div class="section">
<h2><a name="axis2-repo:create-repository"></a>axis2-repo:create-repository</h2>
      
<p><b>Full name</b>:</p>
      
<p>org.apache.axis2:axis2-repo-maven-plugin:1.7.9:create-repository</p>
      
<p><b>Description</b>:</p>
      
<div>Creates an Axis2 repository from the project's runtime
dependencies. This goal is typically used to build an Axis2
repository that will be packaged into some kind of distribution.</div>
      
<p><b>Attributes</b>:</p>
      
<ul>
        
<li>Requires a Maven 2.0 project to be executed.</li>
        
<li>Requires dependency resolution of artifacts in scope: <tt>runtime</tt>.</li>
        
<li>The goal is thread-safe and supports parallel builds.</li>
        
<li>Binds by default to the lifecycle phase: <tt>package</tt>.</li>
      </ul>
      
<div class="section">
<h3><a name="Optional_Parameters"></a>Optional Parameters</h3>
        
<table class="table table-striped" border="0" align="left">
          
<tr class="a">
            
<th>Name</th>
            
<th>Type</th>
            
<th>Since</th>
            
<th>Description</th>
          </tr>
          
<tr class="b">
            
<td><b><a href="#axis2xml">axis2xml</a></b></td>
            
<td><tt>File</tt></td>
            
<td><tt>-</tt></td>
            
<td>The <tt>axis2.xml</tt> file to be copied into the repository.<br /></td>
          </tr>
          
<tr class="a">
            
<td><b><a href="#configurationDirectory">configurationDirectory</a></b></td>
            
<td><tt>String</tt></td>
            
<td><tt>-</tt></td>
            
<td>The directory (relative to the repository root) where the
<tt>axis2.xml</tt> file will be copied. If this parameter is not
set, then the file will be copied into the repository root.<br /></td>
          </tr>
          
<tr class="b">
            
<td><b><a href="#generateFileLists">generateFileLists</a></b></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>-</tt></td>
            
<td>Specifies whether the plugin should generate <tt>services.list</tt>
and <tt>modules.list</tt> files.<br /><b>Default value is</b>: <tt>false</tt>.</td>
          </tr>
          
<tr class="a">
            
<td><b><a href="#includeModules">includeModules</a></b></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>-</tt></td>
            
<td>Specifies whether modules should be deployed to the repository.<br /><b>Default value is</b>: <tt>true</tt>.</td>
          </tr>
          
<tr class="b">
            
<td><b><a href="#includeServices">includeServices</a></b></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>-</tt></td>
            
<td>Specifies whether services should be deployed to the repository.<br /><b>Default value is</b>: <tt>true</tt>.</td>
          </tr>
          
<tr class="a">
            
<td><b><a href="#modules">modules</a></b></td>
            
<td><tt>String</tt></td>
            
<td><tt>-</tt></td>
            
<td>Comma separated list of modules (by artifactId) to include in the
repository.<br /></td>
          </tr>
          
<tr class="b">
            
<td><b><a href="#modulesDirectory">modulesDirectory</a></b></td>
            
<td><tt>String</tt></td>
            
<td><tt>-</tt></td>
            
<td>The directory (relative to the repository root) where MAR files are
copied. This should be set to the same value as the
<tt>ModulesDirectory</tt> property in <tt>axis2.xml</tt>.<br /><b>Default value is</b>: <tt>modules</tt>.</td>
          </tr>
          
<tr class="a">
            
<td><b><a href="#outputDirectory">outputDirectory</a></b></td>
            
<td><tt>File</tt></td>
            
<td><tt>-</tt></td>
            
<td>The output directory where the repository will be created.<br /><b>Default value is</b>: <tt>${project.build.directory}/repository</tt>.</td>
          </tr>
          
<tr class="b">
            
<td><b><a href="#services">services</a></b></td>
            
<td><tt>String</tt></td>
            
<td><tt>-</tt></td>
            
<td>Comma separated list of services (by artifactId) to include in the
repository.<br /></td>
          </tr>
          
<tr class="a">
            
<td><b><a href="#servicesDirectory">servicesDirectory</a></b></td>
            
<td><tt>String</tt></td>
            
<td><tt>-</tt></td>
            
<td>The directory (relative to the repository root) where AAR files are
copied. This should be set to the same value as the
<tt>ServicesDirectory</tt> property in <tt>axis2.xml</tt>.<br /><b>Default value is</b>: <tt>services</tt>.</td>
          </tr>
          
<tr class="b">
            
<td><b><a href="#stripModuleVersion">stripModuleVersion</a></b></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>-</tt></td>
            
<td>Specifies whether the plugin strips version numbers from MAR files.<br /><b>Default value is</b>: <tt>false</tt>.</td>
          </tr>
          
<tr class="a">
            
<td><b><a href="#stripServiceVersion">stripServiceVersion</a></b></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>-</tt></td>
            
<td>Specifies whether the plugin strips version numbers from AAR files.<br /><b>Default value is</b>: <tt>true</tt>.</td>
          </tr>
          
<tr class="b">
            
<td><b><a href="#useDependencies">useDependencies</a></b></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>-</tt></td>
            
<td>Specifies whether the plugin should scan the project dependencies
for AAR and MAR artifacts.<br /><b>Default value is</b>: <tt>true</tt>.</td>
          </tr>
          
<tr class="a">
            
<td><b><a href="#useModules">useModules</a></b></td>
            
<td><tt>boolean</tt></td>
            
<td><tt>-</tt></td>
            
<td>Specifies whether the plugin should scan Maven modules for AAR and
MAR artifacts. This parameter only has an effect for multimodule
projects.<br /><b>Default value is</b>: <tt>true</tt>.</td>
          </tr>
        </table>
      </div>
      
<div class="section">
<h3><a name="Parameter_Details"></a>Parameter Details</h3>
        
<p><b><a name="axis2xml">axis2xml</a>:</b></p>
        
<div>The <tt>axis2.xml</tt> file to be copied into the repository.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.io.File</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
        </ul><hr />
<p><b><a name="configurationDirectory">configurationDirectory</a>:</b></p>
        
<div>The directory (relative to the repository root) where the
<tt>axis2.xml</tt> file will be copied. If this parameter is not
set, then the file will be copied into the repository root.</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="generateFileLists">generateFileLists</a>:</b></p>
        
<div>Specifies whether the plugin should generate <tt>services.list</tt>
and <tt>modules.list</tt> files.</div>
        
<ul>
          
<li><b>Type</b>: <tt>boolean</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>Default</b>: <tt>false</tt></li>
        </ul><hr />
<p><b><a name="includeModules">includeModules</a>:</b></p>
        
<div>Specifies whether modules should be deployed to the repository.</div>
        
<ul>
          
<li><b>Type</b>: <tt>boolean</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>Default</b>: <tt>true</tt></li>
        </ul><hr />
<p><b><a name="includeServices">includeServices</a>:</b></p>
        
<div>Specifies whether services should be deployed to the repository.</div>
        
<ul>
          
<li><b>Type</b>: <tt>boolean</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>Default</b>: <tt>true</tt></li>
        </ul><hr />
<p><b><a name="modules">modules</a>:</b></p>
        
<div>Comma separated list of modules (by artifactId) to include in the
repository.</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="modulesDirectory">modulesDirectory</a>:</b></p>
        
<div>The directory (relative to the repository root) where MAR files are
copied. This should be set to the same value as the
<tt>ModulesDirectory</tt> property in <tt>axis2.xml</tt>.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>Default</b>: <tt>modules</tt></li>
        </ul><hr />
<p><b><a name="outputDirectory">outputDirectory</a>:</b></p>
        
<div>The output directory where the repository will be created.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.io.File</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>Default</b>: <tt>${project.build.directory}/repository</tt></li>
        </ul><hr />
<p><b><a name="services">services</a>:</b></p>
        
<div>Comma separated list of services (by artifactId) to include in the
repository.</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="servicesDirectory">servicesDirectory</a>:</b></p>
        
<div>The directory (relative to the repository root) where AAR files are
copied. This should be set to the same value as the
<tt>ServicesDirectory</tt> property in <tt>axis2.xml</tt>.</div>
        
<ul>
          
<li><b>Type</b>: <tt>java.lang.String</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>Default</b>: <tt>services</tt></li>
        </ul><hr />
<p><b><a name="stripModuleVersion">stripModuleVersion</a>:</b></p>
        
<div>Specifies whether the plugin strips version numbers from MAR files.</div>
        
<ul>
          
<li><b>Type</b>: <tt>boolean</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>Default</b>: <tt>false</tt></li>
        </ul><hr />
<p><b><a name="stripServiceVersion">stripServiceVersion</a>:</b></p>
        
<div>Specifies whether the plugin strips version numbers from AAR files.</div>
        
<ul>
          
<li><b>Type</b>: <tt>boolean</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>Default</b>: <tt>true</tt></li>
        </ul><hr />
<p><b><a name="useDependencies">useDependencies</a>:</b></p>
        
<div>Specifies whether the plugin should scan the project dependencies
for AAR and MAR artifacts.</div>
        
<ul>
          
<li><b>Type</b>: <tt>boolean</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>Default</b>: <tt>true</tt></li>
        </ul><hr />
<p><b><a name="useModules">useModules</a>:</b></p>
        
<div>Specifies whether the plugin should scan Maven modules for AAR and
MAR artifacts. This parameter only has an effect for multimodule
projects.</div>
        
<ul>
          
<li><b>Type</b>: <tt>boolean</tt></li>
          
<li><b>Required</b>: <tt>No</tt></li>
          
<li><b>Default</b>: <tt>true</tt></li>
        </ul>
      </div>
    </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>