<?xml version="1.0"?>
<!--
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>
 <properties>
  <title>Building</title>
  <author email="dev@commons.apache.org">Commons Documentation Team</author>
 </properties>
<body>
<!-- ================================================== -->
<section name="Overview">
<p>
  Commons Lang uses <a href="http://maven.apache.org">Maven</a> or
  <a href="http://ant.apache.org">Ant</a> as a build system.
</p>
<p>
  You may also be interested in the upgrade notes:
</p>
<ul>
  <li>Upgrade from 2.5 to 2.6 - <a href="upgradeto2_6.html">Lang 2.6 Release Notes</a></li>
  <li>Upgrade from 2.4 to 2.5 - <a href="upgradeto2_5.html">Lang 2.5 Release Notes</a></li>
  <li>Upgrade from 2.3 to 2.4 - <a href="upgradeto2_4.html">Lang 2.4 Release Notes</a></li>
  <li>Upgrade from 2.2 to 2.3 - <a href="upgradeto2_3.html">Lang 2.3 Release Notes</a></li>
  <li>Upgrade from 2.1 to 2.2 - <a href="upgradeto2_2.html">Lang 2.2 Release Notes</a></li>
  <li>Upgrade from 2.0 to 2.1 - <a href="upgradeto2_1.html">Lang 2.1 Release Notes</a></li>
  <li>Upgrade from 1.0 to 2.0 - <a href="upgradeto2_0.html">Lang 2.0 Release Notes</a></li>
</ul>
</section>
<!-- ================================================== -->
<section name="Maven Goals">
  <p>
    To build a jar file, change into the root directory of Lang and run "mvn package".
    The result will be in the "target" subdirectory.
  </p>
  <p>
    To build the full website, run "mvn site".
    The result will be in "target/site".
    You must be online to successfully complete this target.
  </p>
  <p>
    Further details can be found in the
    <a href="http://commons.apache.org/building.html">commons build instructions</a>.
  </p>
</section>
<!-- ================================================== -->
<section name="Ant Goals">
  <p>
    To build a jar file, change into the root directory of Lang and run "ant jar".
    The result will be in the "target" subdirectory.
  </p>
  <p>
    To build the Javadocs, run "ant javadoc".
    The result will be in "target/docs/api".
  </p>
</section>
<!-- ================================================== -->
</body>
</document>
