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 7.6.11.v20130520

   Alternatively, you can set the variable NEW_VERSION to be the new version number, eg:
       >  export NEW_VERSION=7.6.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=master -Dset_pom_version=7.6.11.v20130520 -Djetty_release_version=7.6.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=7.6.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-7
this is version 7.6.6. set_pom_version controls the version number of the p2 feature, whilst jetty_release_version controls the version number of 
the jetty jars used.
