 ------
 Guide to building Continuum
 ------
 Emmanuel Venisse
 ------
 Oct 3 2007
 ------

~~ 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.

Guide to building Continuum

* Why would I want to build Continuum?

  You might want to build Continuum yourself for one of two reasons:

    * To build the source release of Continuum

    * to try out a bleeding edge feature or bugfix (issues can be found in
      {{{http://jira.codehaus.org/browse/CONTINUUM} JIRA}}), but you can try our SNAPSHOTs: {{http://vmbuild.apache.org/}}

    * to fix a problem you are having and submit a patch to the development team.

  Note that for releases, you may also make use of pre-built binaries.

* Checking out the sources

  All of the source code for Continuum and its related libraries is in a Subversion repository.
  You can also {{{http://svn.apache.org/viewvc/continuum/} browse the repository}}, or checkout specific modules directly.

  All SVN instructions are available on the {{{http://continuum.apache.org/source-repository.html}Source Repository page}}.

* Building the sources

** Prerequisites

    * JDK 5 or greater

    * Maven 2.0.7 or greater
	
** Building

  To build Continuum, you run this command from the top (trunk) directory:

-----------------
mvn clean install
-----------------
