<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.9.2 at 2021-08-01 
 | 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="20210801" />
    <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: 2021-08-01<span class="divider">|</span>
</li>
          <li id="projectVersion">Version: 1.8.0<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.8.0.html" title="1.8.0"><span class="none"></span>1.8.0</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="../git.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>
<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>
<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.8.0 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>
<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>
</section><section>
<h3><a name="a2._WAR_.28Web_Archive.29_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>
</section><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>
</section><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>
</section><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>
<section>
<h2><a name="Installing_Axis2_as_a_Standalone_Server_using_the_Standard.0ABinary_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>
<section>
<h3><a name="a1._Download_and_Install_the_Apache_Axis2_Binary.0ADistribution"></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.8.0). 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>
</section><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>
</section><section>
<h3><a name="a3._Building_the_Axis2_Web_Application_.28axis2.war.29_Using.0AStandard_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>
</section><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 <code>-xdebug</code>
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>
</section><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>
<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>
<section>
<h2><a name="Advanced"></a>Advanced</h2>
<a name="source" id="source"></a>
<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>
<section>
<h3><a name="Setting_Up_the_Environment_and_Tools"></a>Setting Up the Environment and Tools</h3>
<a name="maven" id="maven"></a>
<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>
</section></section><section>
<h3><a name="Building_Binaries_and_the_WAR_File_Using_the_Source.0ADistribution"></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
<code>mvn install</code> 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>
</section>
</html>
        </div>
      </div>
    </div>
    <hr/>
    <footer>
      <div class="container-fluid">
        <div class="row-fluid">
            <p>Copyright &copy;2004&#x2013;2021
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
All rights reserved.</p>
        </div>
        </div>
    </footer>
    </body>
</html>
