<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ Licensed to the Apache Software Foundation (ASF) under one
  ~ or more contributor license agreements. See the NOTICE file
  ~ distributed with this work for additional information
  ~ regarding copyright ownership. The ASF licenses this file
  ~ to you under the Apache License, Version 2.0 (the
  ~ "License"); you may not use this file except in compliance
  ~ with the License. You may obtain a copy of the License at
  ~
  ~ http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing,
  ~ software distributed under the License is distributed on an
  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  ~ KIND, either express or implied. See the License for the
  ~ specific language governing permissions and limitations
  ~ under the License.
  -->
<document xmlns="http://maven.apache.org/XDOC/2.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
    <properties>
        <title>Developing Apache Axis2</title>
    </properties>
    <body>
        <section name="Introduction">
            <p>
                This document provides information on how to use Git to get a
                GitHub checkout/update, make commits to the repository, etc., in the
                process of contributing to Apache projects (specifically Axis2).
                Instructions on configuring IDEs for development and using Maven to
                build the project is also included here.
            </p>
        </section>
        <section name="Working with GitHub (Git)">
            <p>
                The Axis2 development team uses GitHub (Git) for source
                control.
            </p>
        </section>
        <section name="Checkout Axis2 from Git">
            <p>
                To check out the latest version of Axis2 from the Foundation's
                GitHub repository, you must use the following URL:
            </p>
            <ul>
                <li><b>If you are a committer or not a committer, the link is the same:</b> <a href=
                "https://github.com/apache/axis-axis2-java-core">https://github.com/apache/axis-axis2-java-core</a></li>
            </ul>
            <p>
                Once you have successfully installed Git, you can check
                out Axis2 trunk by following these steps:
            </p>
            <ol type="1">
                <li>Run <strong>git clone &lt;repository URL&gt;</strong> where
                the repository URL from the previous list.</li>
                <li>This step will check out the latest version of the Axis2 Java
                codebase to a directory named "axis-axis2-java-core".</li>
            </ol>
        </section>
        <section name="Installing Maven 3">
            <p>
                Axis2's build is based on Maven 3. 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 3, please see the <a href=
                "http://maven.apache.org">Maven project page</a>.
                To use Maven to build the Axis2 project, Please install
                <a href="http://maven.apache.org/download.html">Maven2</a> and
                follow instructions here -  <a href="maven-help.html">Quick Guide to Maven for Axis 2.0</a>.
            </p>
        </section>
        <section name="Configuring your IDE">
            <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>
            <subsection name="Intellij IDEA">
                <p>
                    Type <strong>mvn idea:idea</strong>. Generates the necessary IDEA .ipr, .iml
                    and .iws project files.
                </p>
            </subsection>
            <subsection name="Eclipse">
                <p>
                    We recommend using <a href="http://maven.apache.org/plugins/maven-eclipse-plugin/">maven-eclipse-plugin</a>
                    to import the Axis2 sources into Eclipse. This works best with the following
                    combinations of versions and settings:
                </p>
                <ul>
                    <li>
                        Early versions of Maven 2 have issues with non standard packagings
                        (<tt>bundle</tt>, <tt>aar</tt> and <tt>mar</tt> in the case of Axis2)
                        in multi-module builds. While this has no impact on the normal Maven
                        build, it prevents the Maven Eclipse plugin from identifying modules
                        with these packagings as Java projects. Therefore it is recommended
                        to use Maven 2.2.x or 3.0.x to execute the Maven Eclipse plugin.
                    </li>
                    <li>
                        By default, the Maven Eclipse plugin only imports generated sources
                        and resources created during the <tt>generate-sources</tt> and
                        <tt>generate-resources</tt> phases, but fails to locate them if they
                        are generated during the <tt>generate-test-sources</tt> and
                        <tt>generate-test-resources</tt> phases. This is due to a limitation in Maven 2 (see
                        <a href="http://jira.codehaus.org/browse/MECLIPSE-37">MECLIPSE-37</a>
                        for more information). Executing the <tt>eclipse:eclipse</tt> goal after
                        the <tt>process-test-resources</tt> phase is also not enough because of
                        <a href="http://jira.codehaus.org/browse/MDEP-259">MDEP-259</a>. The
                        best is to execute it after the <tt>install</tt> phase. The <tt>skipTests</tt>
                        property can be used to skip the execution of the unit tests (<tt>maven.test.skip</tt>
                        is not appropriate here because it also skips some of the goals configured
                        in the <tt>generate-test-sources</tt> and <tt>generate-test-resources</tt> phases).
                    </li>
                </ul>
                <p>
                    To summarize, use the following command to prepare the Axis2 sources for
                    import into Eclipse:
                </p>
                <pre>mvn -DskipTests=true install eclipse:eclipse</pre>
                <p>
                    As usual, before importing the projects into Eclipse, check that a Classpath Variable
                    for <tt>M2_REPO</tt> is configured in Eclipse. Then select File &gt; Import &gt; Existing Projects
                    into Workspace &gt; Select root directory. Selecting the root of
                    the Axis source discovers all the modules and allows them to be
                    imported as individual projects at once.
                </p>
            </subsection>
        </section>
    </body>
</document>
