Jetty, Maven, and YOU!
Jetty leverages maven for its build. There are a few key points to understand when working with the jetty build, as a developer and as a more casual committer, or simply someone that likes to have the bleeding edge of software.
Administrative Project Files
Jetty makes use of a separately versioned administrative project file located as its own project structure in svn. Only developers will need to interact with this file so the vast majority of people can just skip to the next step. This file is released separately from individual jetty releases so it is highly likely that multiple jetty versions will make use of the same jetty-parent version. The jetty-project and jetty-contrib-parent both register this project file as their parent. These are the only projects that will likely register this parent pom as their parent. Downstream artifacts will reference either jetty-project or jetty-contrib-parent as their parent project files.
The svn location for this file is:
There is also another artifact under this project called jetty-build-resources. This artifact contains shared resources that are used by the vast majority of jetty artifacts in order to build and similar to the jetty-parent are not subject to release with individual jetty releases.
The administrative project file contains information about the developers of jetty, mailing lists, distribution information, shared plugin configurations, etc.
Jetty Project Structure
Jetty is comprised of two separate and distinct source repositories. These are referred to as the jetty trunk which is all core artifacts to jetty, and the jetty contrib trunk which are artifacts that add different functionalities to jetty such as integrations, etc. The intent is that each of these project trunks should be able to be build separately but that they will also function together when the builds are meshed with svn:externals. This linkage behavior it implemented with profiles in maven and is referred to below.
The jetty trunk checkout will pull all code required to build the jetty project.
The svn location for this project is:
To build just the jetty core project all that needs to be run is 'mvn install' but since the jetty-contrib project is brought in via svn:externals declaration and as mentioned above it ideally a separate entity a profile needs to be activated to factor in the contrib modules. Running 'mvn -Pall-modules install' will trigger these contrib modules to also be built in the reactor.
> svn co http://svn.codehaus.org/jetty-contrib/trunk jetty-contrib
By default the jetty-contrib-parent does not declare the projects within as modules as ideally in the future the individual jetty contrib modules will be separately releasable on their own timelines as opposed to being lockstep with jetty releases. Whether this happens or not remains to be seen, but to build all registered artifacts in jetty-contrib simply execute maven with the all-modules profile activated. Not all modules in jetty-contrib build directly with maven so they may or may not be activated with this profile but within the jetty-contrib project, all committers have access to adding or removing modules from the all-modules profile.