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

Guide to building Continuum

* Why would I want to build Continuum?

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

    * 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 you don't need to build Continuum for day to day use. While we encourage getting
  involved and fixing bugs that you find, for day to day use we recommend using the latest release.

* Checking out the sources

  All of the source code for Continuum and its related libraries is in a {{{http://subversion.tigris.org/} 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 {{{../../../source-repository.html}Source Repository page}}.

* Building the sources

** Prerequisites

    * JDK 5 or greater

    * Maven 2
	
** Building

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

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