Structure
========

Only specs under active development should be in trunk.  Once you release, delete the trunk.  If you need to make a change or bugfix, copy the latest tag into trunk and work with that.

Be certain that all dependencies are marked "provided"

Do not copy any code into branches under any circumstances.

Building
========

The is normally no root pom, so you need to build specs individually.

To build you will need:

 * J2SE SDK 1.5+ (http://java.sun.com/j2se/1.5)
 * Maven 2.0.9+ (http://maven.apache.org)

To build all changes incrementally:

    mvn install

To perform clean builds, which are sometimes needed after some changes to the 
source tree:

    mvn clean install


Releasing
=========

Use the maven-release-plugin.  

Stage to your people.apache.org account or to your local machine and scp to people.apache.org.

After a release vote has passed use the maven-stage-plugin to transfer the voted artifacts to the apache release repo.
