Building Maven yourself is for one of two reasons:
Note, that you don't need to bootstrap Maven for day to day use, or to develop plugins. While we encourage getting involved and fixing bugs that you find, for day to day use we recommend using the latest release.
All of the source code for Maven and its related libraries is in managed in the ASF source code repositories. Current development of the core of Maven, and some other components, are in git. Other pieces (and older versions) are in Subversion. For details, see http://maven.apache.org/source-repository.html.
To build Maven 3 (the current stable branch), you need the HEAD of the maven module. To check that out, run the command:
git clone https://git-wip-us.apache.org/repos/asf/maven.git maven
To build Maven 2, you need the maven-2.2.x branch. To check that out from a cloned repository, run the command:
git checkout maven-2.2.x
Other modules you might be interested in related to Maven development are:
If you're looking at the trunks directory with ViewVC, there is seemingly nothing there. We use externals definitions to link together all the trunks into one logical location for convenience. If you want to see what is being linked into one logical location you can use the following command:
svn propget svn:externals
If you already have Maven installed, it can be faster to build a new version with Maven, rather than a clean bootstrap.
To do this, run from the maven-3 or maven-2.2.x directory:
Optionally, you can use the following to run the full (long) suite of integration tests; see below.
The assemblies will be created in apache-maven/target for Maven 2.0.x or maven-distribution for Maven 2.1, and can be unzipped to the location where you'd like Maven installed.
Before checking in a change or submitting a patch, it's a good idea to run the integration tests. These live in their own directory in subversion, as noted above: core-integration-testing/trunk. Using your local build of Maven, run:
mvn install -Prun-its
If you do not have Maven installed, you can use Apache Ant to build Maven.
Once you have checked out the code, change into the maven-3 or maven-2.2.x directory that was created.
Set the M2_HOME environment variable to the location that should contain Maven. This directory must be named after the Maven version you want to build and install, for example /usr/local/maven-2.2-SNAPSHOT.
export M2_HOME=/usr/local/maven-2.2-SNAPSHOT PATH=$M2_HOME/bin:$PATH
set M2_HOME=c:\maven-2.2-SNAPSHOT set PATH=%M2_HOME%\bin;%PATH%
From this, run the ant command:
This will download dependencies, build Maven, and install it into the directory you specified as M2_HOME above.
If you have any problems or get any failures during the run, please report them to the Maven Developers List.
For more information, consult the project help in the Ant build file.
The result is included here for convenience:
Buildfile: build.xml The first time you build Maven from source, you have to build Maven without Maven. This Ant script builds a minimal Maven, just enough to re-launch Maven again in this directory and generate an installation assembly. Then we extract the assembly and re-run the Maven build one more time, this time with the full generated Maven. To run this script, you must set the M2_HOME environment variable or the maven.home property to the location that should contain Maven. This directory *must* be named after the maven version you want to install, e.g. /usr/local/maven-2.1-SNAPSHOT. You can set the maven.repo.local property to specify a custom location for your local repository for the bootstrap process. Main targets: classpath-pre constructs a classpath reference containing our dependencies, and verifies that all files are present clean-bootstrap cleans up generated bootstrap classes compile-boot compiles the bootstrap sources extract-assembly extracts the maven assembly into maven.home generate-sources generates Java sources from Modello mdo model files maven-assembly generates the Maven installation assembly using the bootstrap Maven maven-compile compiles Maven using the bootstrap Maven, skipping automated tests pull copies all required dependencies from the Maven remote repository into your local repository. Set the 'skip.pull' property to skip this step, but only if you're sure you already have all of the dependencies downloaded to your local repository run-full-maven runs the full extracted Maven, now with tests Default target: all