<html>
<head>
  <meta http-equiv="content-type" content="">
  <title></title>
</head>

<body>
<h1>Developing Apache Axis2</h1>

<h2>Working with Subversion</h2>

<p>The Axis2 development team uses Subversion for source control. Subversion
is a compelling replacement for CVS, developed under the auspices of the
Tigris community and is licensed under an Apache compatible license. To learn
more about Subversion or to download the latest distribution, visit the <a
href="http:///subversion.tigris.org">Subversion project site</a>.  If you are
looking for guidance on setting up and installing Subversion, please read the
ASF <a href="http://www.apache.org/dev/version-control.html">Source Code
Repositories page</a>.</p>

<h2>Checkout Axis2 from Subversion</h2>

<p>When checking out the latest version of Axis from the Foundation's
Subversion repository you must use one of the following URLs depending on
your level of access to the Axis2 source code:</p>
<ul>
  <li><b>If you are not a committer:</b> Use <a
    href="http://svn.apache.org/repos/asf/webservices/axis2/trunk/java">http://svn.apache.org/repos/asf/webservices/axis2/trunk/java</a></li>
  <li><b>If you are a committer:</b> Use <a
    href="https://svn.apache.org/repos/asf/webservices/axis2/trunk/java">https://svn.apache.org/repos/asf/webservices/axis2/trunk/java</a></li>
</ul>
If you are a committer, make sure that you have selected an svnpasswd.  To do
this you must log into svn.apache.org.  For more information, please read the
ASF <a href="http://www.apache.org/dev/version-control.html">Source Code
Repositories page</a>. 

<p>Once you have successfully installed Subversion, you can check out Axis2
trunk by following these steps:</p>
<ol type="1">
  <li>Run <strong>svn co &lt;repository URL&gt; axis2</strong> where
    repository URL is one of the URLs from the previous list.</li>
  <li>This step will check out the latest version of the Axis2 Java codebase
    to a directory named "axis2".  The second parameter to the svn co selects
    a directory to create on your local machine.  If you want to checkout
    Axis2 to a different directory, feel free to change axis2 to any other
    directory name.</li>
  <li>To update your working copy to the latest version from the repository.
    Execute the <strong>svn update</strong> command.</li>
  <li>If you would like to submit a patch, you can execute <strong>svn
    diff</strong> to create a unified diff for submission to the Axis JIRA
    issue tracker.</li>
</ol>

<h2>Installing Maven 1</h2>

<p>Axis2's build is based on Maven 1.  Maven is a build system that allows
for the reuse of common build projects across multiple projects.  For
information about obtaining, installing, and configuring Maven 1, please see
the <a href="http://maven.apache.org">Maven project page</a>.  To use Maven
to build the Axis2 project, follow these simple steps:</p>
<ol type="1">
  <li>Install <a href="http://maven.apache.org/">Maven</a>. See <a
    href="http://maven.apache.org/start/install.html">here</a> for
    instructions.
    <ul>
      <li>Create a MAVEN_HOME environment variable.</li>
      <li>Add MAVEN_HOME/bin to your PATH</li>
    </ul>
  </li>
  <li>Go to the axis2 folder in the command prompt and type
    <strong>maven<strong>.</strong></strong></li>
  <li>Maven will then automatically download all the jars, compile, test and
    build the Axis2 deliverables.</li>
</ol>

<h2>Configuring your IDE</h2>

<p>The Axis2 development team uses a variety of development tools from vi to
emacs to Eclipse to Intellij/IDEA.  The following section is not an
endorsement of a specific set of tools, it is simply meant as a pointer to
ease the process of getting started with Axis2 development.</p>
<ul>
  <li><strong>Intellij IDEA </strong>: type <strong>maven
    idea:multiproject</strong>. This will generate the necessary IDEA .ipr,
    .iml and .iws project files</li>
  <li><strong>Eclipse</strong>: The Maven eclipse plugin does not support
    Maven multiprojects.  You will need to execute <strong>maven
    eclipse</strong> from each of the module directories.</li>
</ul>
</body>
</html>
