jetty-repo
----------
Goal: shortest path to publishing the jetty jars in a p2-repository.
No external dependency in the produced repository, no mirroring of any jars unrelated to jetty.
During the build tycho requires that all dependencies be resolved transitively.
We depend on orbit and the platform repositories for this.

Using maven-tycho as it can publish artifacts located in maven repositories into p2-repositories.
Single feature that contains all the jetty jars. That feature is only useful to be able to have tycho publish the jetty-jars.



Building
--------
Steps:

1. Update the version number
   Use the set-version.sh script. This accepts an argument of the new version number, eg:
       > set-version.sh 8.1.11.v20130520

   Alternatively, you can set the variable NEW_VERSION to be the new version number, eg:
       >  export NEW_VERSION=8.1.11.v20130520
       >  set-version.sh

   You can set the variable OLD_VERSION to override the old version number. If you don't set it,
   then the script will parse the pom.xml to extract the <version> instead. Leaving the OLD_VERSION 
   unset and letting the script determine it is the safest course of action.


2. Do the maven/tycho build:

   Here's an example with all options set:

       > mvn -DBRANCH_NAME=jetty-8 -Dset_pom_version=8.1.11.v20130520 -Djetty_release_version=8.1.11.v20130520 -Ddelete_tycho_meta=true -Dforce_context_qualifier= -Dpack_and_sign=true -Dmaven.repo.local=/tmp/jetty-builds/jetty8/localRepo -Dpack-and-sign=true -Djetty-release-version=8.1.11.v20130520 clean verify -X -U
   

3. Do the post build:

       > post-tycho.sh


Hudson Builds on Eclipse
------------------------

There are jobs set up on the Hudson instance on build.eclipse.org that will start a build:

   jetty-rt-bundles
   jetty-rt-bundles-8


When using these jobs, you will need to manually start a build. You will be presented with a form asking you to fill in build parameters,
which are the source of the values you see in Step 2 maven build above.

It is ESSENTIAL that you supply values for the following:

   set_pom_version
   jetty_release_version


Generally, the values for both of these will be identical, ie the latest jetty release number. If you don't provide a value for the set_pom_version,
then the p2 feature that is generated will default to the values contained in the pom.xml and feature.xml files that were last checked in. For jetty-8
this is version 8.0.3. set_pom_version controls the version number of the p2 feature, whilst jetty_release_version controls the version number of 
the jetty jars used.
