# Developing Apache Axiom

This document will give you information on how to use SVN (Subversion) in order to get an SVN checkout/update and making commits to repository etc in the process of contributing to Apache projects (specifically Axiom). Instructions on configuring IDEs for development and using Maven1/Maven2 to build the project is also included here.

## Content

- Working with Subversion (SVN)
- Checkout Apache Axiom from Subversion
- Installing Maven 1.x or 2.x
- Configuring your IDE

## Working with Subversion (SVN)

The Axiom development team uses Subversion (SVN) for source control. Subversion is a compelling replacement for CVS (Concurrent Versioning System), 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 Subversion project site. If you are looking for guidance on setting up and installing Subversion, please read the ASF Source Code Repositories page.

## Checkout Axiom From Subversion

When checking out the latest version of Axiom from the Foundation's Subversion repository you must use one of the following URLs depending on your level of access to the Axiom source code:

- If you are not a committer: Use http://svn.apache.org/repos/asf/webservices/commons/trunk/modules/axiom
- If you are a committer: Use https://svn.apache.org/repos/asf/webservices/commons/trunk/modules/axiom

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 Source Code Repositories page.

Once you have successfully installed Subversion, you can check out Axiom trunk by following these steps:

1. Run svn co <repository URL> axiom where repository URL is one of the URLs from the previous list.
2. This step will checkout the latest version of the Axiom codebase to a directory named "axiom". The second parameter to the svn co selects a directory to create on your local machine. If you want to checkout Axiom to a different directory, feel free to change Axiom to any other directory name.
3. To update your working copy to the latest version from the repository. Execute the svn update command.
4. If you would like to submit a patch, you can execute svn diff to create a unified diff for submission to the WS-Commons JIRA issue tracker.

## Installing Maven

Axiom's build currently supports Maven2 as well as Maven1. 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, please see the Maven project page.

To use Maven1 to build the Axiom project, follow these simple steps:

1. Install Maven1. See here for instructions.
   - Create a MAVEN_HOME environment variable.
   - Add MAVEN_HOME/bin to your PATH
2. Go to the axiom folder in the command prompt and type maven.
3. Maven will then automatically download all the jars, compile, test and build the Axiom deliverables.

To use Maven2 to build the Axiom project, follow these simple steps:

1. Install Maven2. See here for instructions.
2. Go to the axiom folder in the command prompt and type mvn install.
3. Maven2 will then automatically download all the jars, compile, test and build the Axiom deliverables.

## Configuring your IDE

The Axiom 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 Axiom development.

With Maven 1:

- IntelliJ IDEA- type maven idea:multiproject. This will generate the necessary IDEA .ipr, .iml and .iws project files
- eclipse- The Maven eclipse plugin does not support Maven multiprojects. You will need to execute maven eclipse from each of the module directories.