<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.7.4 at 2017-05-06 
 | 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="20170506" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Apache Axis2 &#x2013; Axis2 Installation Guide</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>
<meta name="generator" content="HTML Tidy for Windows (vers 14 June 2007), see www.w3.org" /><meta http-equiv="content-type" content="" />      </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: 2017-05-06<span class="divider">|</span>
</li>
          <li id="projectVersion">Version: 1.7.5<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="active ">Axis2 Installation Guide</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">Axis2/Java</li>
    <li><a href="../index.html" title="Home"><span class="none"></span>Home</a>  </li>
    <li><a href="../download.html" title="Downloads"><span class="none"></span>Downloads</a>  </li>
    <li><a href="javascript:void(0)" title="Release Notes"><span class="icon-chevron-down"></span>Release Notes</a>
      <ul class="nav nav-list">
    <li><a href="../release-notes/1.6.1.html" title="1.6.1"><span class="none"></span>1.6.1</a>  </li>
    <li><a href="../release-notes/1.6.2.html" title="1.6.2"><span class="none"></span>1.6.2</a>  </li>
    <li><a href="../release-notes/1.6.3.html" title="1.6.3"><span class="none"></span>1.6.3</a>  </li>
    <li><a href="../release-notes/1.6.4.html" title="1.6.4"><span class="none"></span>1.6.4</a>  </li>
    <li><a href="../release-notes/1.7.0.html" title="1.7.0"><span class="none"></span>1.7.0</a>  </li>
    <li><a href="../release-notes/1.7.1.html" title="1.7.1"><span class="none"></span>1.7.1</a>  </li>
    <li><a href="../release-notes/1.7.2.html" title="1.7.2"><span class="none"></span>1.7.2</a>  </li>
    <li><a href="../release-notes/1.7.3.html" title="1.7.3"><span class="none"></span>1.7.3</a>  </li>
    <li><a href="../release-notes/1.7.4.html" title="1.7.4"><span class="none"></span>1.7.4</a>  </li>
    <li><a href="../release-notes/1.7.5.html" title="1.7.5"><span class="none"></span>1.7.5</a>  </li>
      </ul>
  </li>
    <li><a href="../modules/index.html" title="Modules"><span class="none"></span>Modules</a>  </li>
    <li><a href="../tools/index.html" title="Tools"><span class="none"></span>Tools</a>  </li>
          <li class="nav-header">Documentation</li>
    <li><a href="../docs/toc.html" title="Table of Contents"><span class="none"></span>Table of Contents</a>  </li>
    <li class="active"><a href="#"><span class="none"></span>Installation Guide</a>
  </li>
    <li><a href="../docs/quickstartguide.html" title="QuickStart Guide"><span class="none"></span>QuickStart Guide</a>  </li>
    <li><a href="../docs/userguide.html" title="User Guide"><span class="none"></span>User Guide</a>  </li>
    <li><a href="../docs/jaxws-guide.html" title="JAXWS Guide"><span class="none"></span>JAXWS Guide</a>  </li>
    <li><a href="../docs/pojoguide.html" title="POJO Guide"><span class="none"></span>POJO Guide</a>  </li>
    <li><a href="../docs/spring.html" title="Spring Guide"><span class="none"></span>Spring Guide</a>  </li>
    <li><a href="../docs/webadminguide.html" title="Web Administrator's Guide"><span class="none"></span>Web Administrator's Guide</a>  </li>
    <li><a href="../docs/migration.html" title="Migration Guide (from Axis1)"><span class="none"></span>Migration Guide (from Axis1)</a>  </li>
          <li class="nav-header">Resources</li>
    <li><a href="../faq.html" title="FAQ"><span class="none"></span>FAQ</a>  </li>
    <li><a href="../articles.html" title="Articles"><span class="none"></span>Articles</a>  </li>
    <li><a href="http://wiki.apache.org/ws/FrontPage/Axis2/" class="externalLink" title="Wiki"><span class="none"></span>Wiki</a>  </li>
    <li><a href="../refLib.html" title="Reference Library"><span class="none"></span>Reference Library</a>  </li>
    <li><a href="../apidocs/index.html" title="Online Java Docs"><span class="none"></span>Online Java Docs</a>  </li>
          <li class="nav-header">Get Involved</li>
    <li><a href="../overview.html" title="Overview"><span class="none"></span>Overview</a>  </li>
    <li><a href="../svn.html" title="Checkout the Source"><span class="none"></span>Checkout the Source</a>  </li>
    <li><a href="../mail-lists.html" title="Mailing Lists"><span class="none"></span>Mailing Lists</a>  </li>
    <li><a href="../release-process.html" title="Release Process"><span class="none"></span>Release Process</a>  </li>
    <li><a href="../guidelines.html" title="Developer Guidelines"><span class="none"></span>Developer Guidelines</a>  </li>
    <li><a href="../siteHowTo.html" title="Build the Site"><span class="none"></span>Build the Site</a>  </li>
          <li class="nav-header">Project Information</li>
    <li><a href="../team-list.html" title="Project Team"><span class="none"></span>Project Team</a>  </li>
    <li><a href="../issue-tracking.html" title="Issue Tracking"><span class="none"></span>Issue Tracking</a>  </li>
    <li><a href="http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/" class="externalLink" title="Source Code"><span class="none"></span>Source Code</a>  </li>
    <li><a href="../thanks.html" title="Acknowledgements"><span class="none"></span>Acknowledgements</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" >
<html xmlns="http://www.w3.org/1999/xhtml">


<h1 align="center">Apache Axis2 Installation Guide</h1>

<p>This document provides information on Axis2 distribution
packages, system prerequisites and setting up environment variables
and tools followed by detailed instructions on installation
methods.</p>

<p><i>Send your feedback to: <a class="externalLink" href="mailto:java-dev@axis.apache.org?subject=[Axis2]">java-dev@axis.apache.org</a></i>
mailing list. (Subscription details are available on <a href="../mail-lists.html">Axis2 site</a>.)
Kindly prefix every email subject with [Axis2].</p>

<div class="section">
<h2><a name="Contents"></a>Contents</h2>

<ul>

<li><a href="#Download_Axis2">Axis2 Distributions</a></li>

<li><a href="#requirements">System Requirements</a></li>

<li><a href="#standalone">Installing Axis2 as a Standalone Server
using the Standard Binary Distribution</a>

<ul>

<li><a href="#standalone1">Installing the Apache Axis2 Binary
Distribution</a></li>

<li><a href="#standalone2">Starting up Axis2 Standalone
Server</a></li>

<li><a href="#standalone3">Building the Axis2 WAR File Using the
Standard Binary Distribution</a></li>

<li><a href="#standalone4">Getting Familiar with Convenient Axis2
Scripts</a></li>
</ul>
</li>

<li><a href="#servlet_container">Installing Axis2 in a Servlet
Container</a></li>

<li><a href="#upload">Uploading Services</a></li>

<li><a href="#advanced">Advanced</a>

<ul>

<li><a href="#source">Axis2 Source Distribution</a>

<ul>

<li><a href="#a_Toc96698083">Setting up the Environment and
Tools</a></li>

<li><a href="#a_Toc96698085">Building Axis2 Binaries and the WAR
file Using the Source Distribution</a></li>
</ul>
</li>
</ul>
</li>
</ul>
<a name="Download_Axis2" id="Download_Axis2"></a>

<div class="section">
<h2><a name="Axis2_Distributions"></a>Axis2 Distributions</h2>

<p>Axis2 is distributed in several convenient distribution packages
and can be installed either as a standalone server or as part of a
J2EE compliant servlet container. Axis2 is distributed under the
Apache License, version 2.0. This Installation Guide will mainly
focus on running Apache Axis2 using the Standard Binary
Distribution.</p>

<p><a href="../download.cgi">
Download</a> distribution packages of the Apache Axis2
1.7.5 version (latest).</p>

<p><a href="../download.cgi">Download</a>
distribution packages of all versions of Apache Axis2.</p>

<p>The distribution packages provided are as follows:</p>
<a name="std-bin" id="std-bin"></a>

<div class="section">
<h3><a name="a1._Standard_Binary_Distribution"></a>1. Standard Binary Distribution</h3>

<p>This is the complete version of Axis2 and includes samples and
convenient scripts as well.</p>

<p><a href="../download.cgi">
Download</a> Standard Binary Distribution</p>
<a name="war1" id="war1"></a>
</div>
<div class="section">
<h3><a name="a2._WAR_Web_Archive_Distribution"></a>2. WAR (Web Archive) Distribution</h3>

<p>This is the Web application of Axis2, which can be deployed in
most of the servlet containers.</p>

<p><a href="../download.cgi">
Download</a> WAR (Web Archive) Distribution</p>
</div>
<div class="section">
<h3><a name="a3._Documents_Distribution"></a>3. Documents Distribution</h3>

<p>This contains all the documentation in one package. The package
includes the xdocs and the Java API docs of this project.</p>

<p><a href="../download.cgi">
Download</a> Documents Distribution</p>
</div>
<div class="section">
<h3><a name="a4._Source_Distribution"></a>4. Source Distribution</h3>

<p>This contains the sources of Axis2 standard distribution, and is
mainly for the benefit of advanced users. One can generate a binary
distribution using the source by typing <span class="style1">$mvn
-Drelease install.</span> You need to set up the Axis2 environment before
running this command. Step by step details on how to create the
binary distribution is available in the <a href="#advanced">Advanced</a> section.</p>

<p><a href="../download.cgi">
Download</a> Source Distribution</p>
<a name="requirements" id="requirements"></a>
</div>
<div class="section">
<h2><a name="System_Requirements"></a>System Requirements</h2>

<table border="0" class="table table-striped">
<tbody>

<tr class="a">

<td>Java Development Kit (JDK)</td>

<td>1.5 or later (For instructions on setting up the JDK in
different operating systems, visit <a class="externalLink" href="http://java.sun.com/">http://java.sun.com</a>)</td>
</tr>

<tr class="b">

<td>Disk</td>

<td>Approximately 11 MB separately for standard binary
distribution</td>
</tr>

<tr class="a">

<td>Operating system</td>

<td>Tested on Windows XP, Linux, Mac OS X, Fedora core, Ubuntu,
Gentoo</td>
</tr>

<tr class="b">

<td><b>Build Tool</b>-<a class="externalLink" href="http://ant.apache.org/">Apache Ant</a>

<p>To run samples and to build WAR files from Axis2 binary
distribution.</p>
</td>

<td>Version 1.6.5 or higher (<a class="externalLink" href="http://ant.apache.org/bindownload.cgi">download</a>).</td>
</tr>

<tr class="a">

<td><b>Build Tool</b>- <a class="externalLink" href="http://maven.apache.org/">Apache Maven 2.x</a>

<p>Required <i>only</i> for building Axis2 from Source
Distribution</p>
</td>

<td>2.0.7 or higher in Maven 2.x series (<a class="externalLink" href="http://maven.apache.org/download.html">download</a>).
<b>Please download Maven 2.x version. Axis2 does not support
Maven 1.x anymore.</b></td>
</tr>
</tbody>
</table>

<p>Make sure that the above prerequisites are available for the
Axis2 installation.</p>
<a name="standalone" id="standalone"></a>

<div class="section">
<h2><a name="Installing_Axis2_as_a_Standalone_Server_using_the_StandardBinary_Distribution"></a>Installing Axis2 as a Standalone Server using the Standard
Binary Distribution</h2>
<a name="standalone1" id="standalone1"></a>

<p>This section provides you with the following information</p>

<ol style="list-style-type: decimal">

<li>Install Axis2 as a standalone server using the Standard Binary
Distribution</li>

<li>Start up the Axis2 standalone server</li>

<li>Building the axis2.war file (using the Standard Binary
Distribution) which is required to run Axis2 as part of a J2EE
compliant servlet container</li>

<li>Running Axis2 convenient scripts</li>
</ol>

<div class="section">
<h3><a name="a1._Download_and_Install_the_Apache_Axis2_BinaryDistribution"></a>1. Download and Install the Apache Axis2 Binary
Distribution</h3>

<p><a class="externalLink" href="http://java.sun.com/j2se/">Download</a> and install a
Java Development Kit (JDK) release (version 1.5 or later). Install
the JDK according to the instructions included with the release.
Set an environment variable JAVA_HOME to the pathname of the
directory into which you installed the JDK release.</p>

<p>Download and unpack the <a href="../download.cgi">
Axis2 Standard Binary Distribution</a> into a convenient location
so that the distribution resides in its own directory. Set an
environment variable AXIS2_HOME to the pathname of the extracted
directory of Axis2 (Eg: /opt/axis2-1.7.5). Linux users
can alternatively run the setenv.sh file available in the
AXIS2_HOME/bin directory to set the AXIS2_HOME environment variable
to the Axis2 classpath.</p>
</div>
<div class="section">
<h3><a name="a2._Starting_up_Axis2_Standalone_Server"></a>2. Starting up Axis2 Standalone Server</h3>

<p>The standalone Axis2 server can be started by executing the
following commands:<br />
%AXIS2_HOME%\bin\axis2server.bat (Windows)<br />
$AXIS2_HOME/bin/axis2server.sh (Unix)</p>

<p>After startup, the default web services included with Axis2 will
be available by visiting http://localhost:8080/axis2/services/</p>
<a name="standalone3" id="standalone3"></a>
</div>
<div class="section">
<h3><a name="a3._Building_the_Axis2_Web_Application_axis2.war_UsingStandard_Binary_Distribution"></a>3. Building the Axis2 Web Application (axis2.war) Using
Standard Binary Distribution</h3>

<p><a class="externalLink" href="http://ant.apache.org/bindownload.cgi">Download</a> and
install Apache Ant (version 1.6.5 or later). Install Apache Ant
according to the instructions included with the Ant release.</p>

<p>Locate the Ant build file (build.xml) inside the webapp
directory, which resides in your Axis2 home directory (i.e:-
$AXIS_HOME/webapp)&quot;. Run the Ant build by executing &quot;ant
create.war&quot; inside the AXIS2_HOME/webapps folder. You can find the
generated axis2.war inside the AXIS2_HOME/dist directory. All the
services and modules that are present in the AXIS2_HOME/repository
will be packed into the created axis2.war together with the Axis2
configuration found at AXIS2_HOME/conf/axis2.xml.</p>

<p>Read <a href="#servlet_container">Installing Axis2 in a Servlet
Container</a> to find out how to deploy the Axis2 Web application
in a servlet container.</p>
<a name="standalone4" id="standalone4"></a>
</div>
<div class="section">
<h3><a name="a4._Getting_Familiar_with_the_Convenient_Axis2_Scripts"></a>4. Getting Familiar with the Convenient Axis2 Scripts</h3>

<p>It is advised to add the AXIS2_HOME/bin to the PATH, so that
you'll be able to run the following scripts from anywhere.</p>

<table border="0" class="table table-striped">
<tbody>

<tr class="a">

<td><b>Script Name</b></td>

<td><b>Description</b></td>
</tr>

<tr class="b">

<td>axis2.{bat|sh}</td>

<td>You can use this script to run web service clients written
using Axis2. This script calls the &quot;java&quot; command after adding the
classpath for Axis2 dependent libraries (*.jar files present in
your AXIS2_HOME/lib), setting the Axis2 repository location
(AXIS2_HOME/repository) and setting the Axis2 configuration file
location(AXIS2_HOME/conf/axis2.xml) for you. With this you can be
relieved from setting all the above Axis2 specific
parameters.<br />

<p><i>Usage : axis2.{sh.bat} [-options] class [args...]</i></p>
</td>
</tr>

<tr class="a">

<td>axis2server.{sh|bat}</td>

<td>This script will start a standalone Axis2 server using the
AXIS2_HOME/repository as the Axis2 repository and the
AXIS2_HOME/conf/axis2.xml as the Axis2 configuration file. This
will start all the transport listeners listed in the
AXIS2_HOME/conf/axis2.xml.

<p>For example, if you want to deploy a service using a standalone
Axis2 server,then copy your service archive to the
AXIS2_HOME/repository/services directory. Next, go to the
&quot;Transport Ins&quot; section of the AXIS2_HOME/conf/axis2.xml and
configure the transport receivers (simpleHttpServer in port 8080 is
listed by default). Then invoke this script.</p>

<p>The server can be started in debug mode by adding the <tt>-xdebug</tt>
option to the command line. A remote debugger can then be attached by
connecting to port 8000.</p>
</td>
</tr>

<tr class="b">

<td>wsdl2java.{bat|sh}</td>

<td>This script generates Java code according to a given WSDL file
to handle Web service invocations (client-side stubs). This script
also has the ability to generate web service skeletons according to
the given WSDL.<br />

<p><i>Usage: wsdl2java.{sh|bat} [OPTION]... -uri &lt;Location of
WSDL&gt;</i></p>

<p>e.g., wsdl2java.sh -uri ../wsdl/Axis2Sample.wsdl</p>

<p>A more detailed reference about this script can be found
<a href="reference.html">here</a></p>
</td>
</tr>

<tr class="a">

<td>java2wsdl.{bat|sh}</td>

<td>This script generates the appropriate WSDL file for a given
Java class.<br />

<p><i>Usage: Java2WSDL.{sh|bat} [OPTION]... -cn &lt;fully
qualified class name&gt;</i></p>

<p>e.g., Java2WSDL.sh -cn ../samples/test/searchTool.Search</p>

<p>A more detailed reference about this script can be found
<a href="reference.html">here</a></p>
</td>
</tr>
</tbody>
</table>
<a name="servlet_container" id="servlet_container"></a>
</div>
<div class="section">
<h2><a name="Installing_Axis2_in_a_Servlet_Container"></a>Installing Axis2 in a Servlet Container</h2>

<p>Whichever the distribution, installing Axis2 in a J2EE compliant
servlet container is as follows:</p>

<ol style="list-style-type: decimal">

<li>Build the Axis2 WAR file using the Axis2 <a href="#standalone3">Standard Binary Distribution</a>. (Alternatively you
can <a href="../download.cgi">
download</a> the axis2.war file or you can build axis2.war using
the <a href="#war">Source Distribution</a>.</li>

<li>Drop the WAR file in the webapps folder of the servlet
container. Most servlet containers will automatically install the
WAR file. (Some servlet containers may require a restart in order
to capture the new web application. Refer to your servlet container
documentation for more information.)
</li>

<li>Once the WAR is successfully installed, test it by pointing the
web browser to the <b>http://&lt;host
:port&gt;/axis2.</b> It should produce the following page
which is the <b>Axis2 Web Application Home Page</b>.
<img src="images/clip_image006.jpg" alt="" />
</li>

<li>Use the link &quot;Validate&quot; to ensure that everything is running
correctly. If the validation fails then the WAR has failed to
install properly or some essential jars are missing. In such a
situation, refer to the documentation of the particular servlet
container to find the problem. The following page shows a
successful validation. Note the statement that indicates the core
Axis2 libraries are present.
<img src="images/happyaxis.jpg" alt="" />
</li>
</ol>
<a name="upload" id="upload"></a>

<p><b>Note:</b> For any Application server specific
installation information please refer to the <a href="app_server.html">Application Server Specific Configuration
Guide</a>.</p>

<div class="section">
<h2><a name="Uploading_Services"></a>Uploading Services</h2>

<div style="margin-left: 2em">

<p>The Axis2 Web application also provides an interface to upload
services. Once a service archive file is created according to the
service specification as described in the <a name="adv-userguide.html" id="adv-userguide.html">Advanced User's Guide</a>, that .aar file can
be uploaded using the upload page.</p>

<p align="center"><b><img src="images/clip_image010.jpg" alt="" /></b></p>

<p>The uploaded .aar files will be stored in the default service
directory. For Axis2, this will be the
&lt;webapps&gt;/axis2/WEB-INF/services directory. Once a service is
uploaded, it will be installed instantly.</p>
<a name="hot_deployment" id="hot_deployment"></a>

<p>Since Axis2 supports <b>hot deployment</b>, you can
drop the service archive directly through the file system to the
above mentioned services directory. It will also cause the service
to be automatically installed without the container being
restarted.</p>

<p>Use the 'Services' link on the Web Application home page to
check the successful installation of a service. The services and
the operations of successfully installed services will be displayed
on the available services page.</p>

<p align="center"><img src="images/clip_image012.jpg" alt="" /></p>

<p>If the service has deployment time errors it will list those
services as faulty services. If you click on the link, you will see
the deployment fault error messages.</p>

<p align="center"><img src="images/faultservice.jpg" alt="" /></p>

<p>Deployment time error message</p>

<p align="center"><b><img src="images/faultmsg.jpg" alt="" /></b></p>

<p>Axis2 Administration is all about configuring Axis2 at the run
time and the configuration will be transient. More descriptions are
available in the <a href="webadminguide.html">Axis2
Web Administration Guide</a></p>
</div>
<a name="advanced" id="advanced"></a>

<div class="section">
<h2><a name="Advanced"></a>Advanced</h2>
<a name="source" id="source"></a>

<div class="section">
<h2><a name="Axis2_Source_Distribution"></a>Axis2 Source Distribution</h2>
<a name="a_Toc96698083"></a> By using the Source Distribution, both
binary files (which can be downloaded as the <a href="#std-bin">Standard Binary Distribution</a>) and the axis2.war file
(which can be downloaded as the <a href="#war1">WAR
distribution</a>) can be built using Maven commands.

<p>Required jar files do not come with the distribution and they
will also have to be built by running the maven command. Before we
go any further, it is necessary to install <a class="externalLink" href="http://maven.apache.org/">Maven2</a> and
set up its environment, as explained below.</p>
<a name="env-src" id="env-src"></a>

<div class="section">
<h3><a name="Setting_Up_the_Environment_and_Tools"></a>Setting Up the Environment and Tools</h3>
<a name="maven" id="maven"></a>

<div class="section">
<h4><a name="Maven"></a>Maven</h4>

<p>The Axis2 build is based on <a class="externalLink" href="http://maven.apache.org/">Maven2</a> .
Hence the only prerequisite to build Axis2 from the source
distribution is to have Maven installed. Extensive instruction
guides are available at the Maven site. This guide however contains
the easiest path for quick environment setting. Advanced users who
wish to know more about Maven can visit <a class="externalLink" href="http://maven.apache.org/users/index.html">this site.</a></p>

<ul>

<li>MS Windows</li>
</ul>

<ol style="list-style-type: decimal">

<li>Download and run the Windows installer package for Maven.</li>

<li>Set the 'Environment Variables' ( create system variable
MAVEN_HOME and edit path. eg: &quot;C:\Program Files\Apache Software
Foundation\maven-2.0.7&quot;; path %MAVEN_HOME%\bin)</li>

<li>Make sure that the system variable JAVA_HOME is set to the
location of your JDK, eg. C:\Program Files\Java\jdk1.5.0_11</li>

<li>Run mvn -v or mvn -version to verify that it is correctly
 installed.</li>
</ol>

<p align="center"><img src="images/clip_image002.jpg" alt="clip_image002 (15K)" /></p>

<ul>

<li>Unix based OS (Linux etc)</li>
</ul>

<p>The tar ball or the zip archive is the best option. Once the
archive is downloaded expand it to a directory of choice and set
the environment variable MAVEN_HOME and add MAVEN_HOME/bin to the
path as well. <a class="externalLink" href="http://maven.apache.org/download.html">More
instructions</a> for installing Maven in Unix based operating
systems.</p>

<p>Once Maven is properly installed, you can start building
Axis2.</p>

<p><a href="../faq.html#d4">Maven commands that are frequently
used</a> in Axis2 are listed on the <a href="../faq.html">FAQs</a>
page.</p>
<a name="a_Toc96698085"></a>
</div></div>
<div class="section">
<h3><a name="Building_Binaries_and_the_WAR_File_Using_the_SourceDistribution"></a>Building Binaries and the WAR File Using the Source
Distribution</h3>

<p>The Source Distribution is available as a zipped archive. All
the necessary build scripts are included with the source
distribution. Once the source archive is expanded into a directory
of choice, moving to the particular directory and running
<tt>mvn install</tt> command will build the Axis2 jar file.</p>

<p>Once the command completes, the binaries (jar files in this
case) can be found at a newly created &quot;target&quot; directory.</p>

<p><b>Note: For the first Maven build (if the maven repository
is not built first) it will take a while since the required jars
need to be downloaded. However, this is a once only process and
will not affect any successive builds.</b></p>
<a name="war" id="war"></a>

<p>The default maven build will generate the war under modules/webapp/target directory</p>
<a name="a_Toc96698086"></a>
</div>
</html>
        </div>
      </div>
    </div>
    <hr/>
    <footer>
      <div class="container-fluid">
        <div class="row-fluid">
            <p>Copyright &copy;2004&#x2013;2017
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
All rights reserved.</p>
        </div>
        </div>
    </footer>
    </body>
</html>