Introduction

The Jakarta Commons HttpClient project is following the new wave of projects that are using Maven to assist in building the packages and all the documentation including javadoc and the website. These instructions describe the release process for HttpClient. While other commons projects may be similar, these instructions are HttpClient specific, but can be adapted to suit other projects.

Step By Step Instructions

The following steps are required to create and deploy a release version of a Commons library package. The example text consistently assumes that we are releasing version 2.0 of the httpclient package.

  1. Announce your proposed release of a particular package to the commons-httpclient-dev@jakarta.apache.org mailing list, and ask for a vote. Per the Commons Project charter, votes of committers on the particular package in question (as listed in the project.xml file) are binding.

  2. Check out and thoroughly test the package code that you plan to release.

  3. Update release_notes.txt. This file should be updated in CVS when patches are committed, but it is frequently not. Be sure all relevant changes since the last release are included. This file should be published along with the release source and binary distributions.

  4. Update the project version number in the build.xml, project.xml, status.xml, downloads.xml, and the HttpMethodBase useragent string. There is an Ant property named component.version that would be updated to 2.0. Check in any files you have modified.

  5. In your local repository (or on cvs.apache.org) tag only the files in the subdirectory for this package with the package name (in caps) and version number for the package you are creating. For example,
                cd $JAKARTA_COMMONS_HOME/httpclient
                cvs tag HTTPCLIENT_2_0_BETA1
              
  6. Regenerate the binary distribution of the code by running maven dist. Ensure that you use the lowest reasonable jdk to do the build, 1.2.2. Review the generated documentation to ensure that it correctly reflects the functionality (and the version number) of this code.

  7. Create a news item. This should be added to httpclient/xdocs/news.xml and the jakarta-site2/xdocs/site/news.xml as well as a one liner in jakarta-site2/xdocs/index.html

  8. Run maven site:generate to generate the website documentation. Browse the generated docs in the target directory to ensure that they are correct and complete. Modify the xdocs as required and when satisfied run maven -Dmaven.username=your.apache.id@ site:deploy to deploy the site to daedalus.

  9. SSH to daedalus (aka jakarta.apache.org) and create a new subdirectory for the release you are about to create. For example:
                cd /www/jakarta.apache.org/builds/jakarta-commons/release/commons-httpclient/
                mkdir v2.0
              
    NOTE: Make sure that the directory you create is group writable.
  10. Upload the binary and source distribution files to the newly created directory on daedalus.
                scp target/distributions/* \
                your_apache_id@jakarta.apache.org:\
                /www/jakarta.apache.org/builds/jakarta-commons/release/commons-httpclient/v2.0/
              
    NOTE: Make sure that the files you copy are group writable.
  11. The release packages must also be uploaded to www.apache.org which is also hosted by daedalus.
                scp target/distributions/commons-httpclient-2.0-src.* \
                  your_apache_id@jakarta.apache.org:\
                  /www/www.apache.org/dist/jakarta/commons/httpclient/source
                scp target/distributions/commons-httpclient-2.0.* \
                  your_apache_id@jakarta.apache.org:\
                  /www/www.apache.org/dist/jakarta/commons/httpclient/binary
              
    NOTE: Make sure that the files you copy are group writable.
  12. Follow standard procedures to update the Jakarta web site (stored in CVS repository jakarta-site2 to reflect the availability of the new release. Generally, you will be updating the following pages:
    • xdocs/site/binindex.xml - Create a link to the release directory under the Release Builds heading.
    • xdocs/site/sourceindex.xml - Create a link to the release directory under the Release Builds heading.
    • xdocs/site/news.xml - Create a news item that describes the new release, and includes hyperlinks to the release directory.
    • xdocs/index.xml - Create a one line news item that links to the full item in site/news.xml.
    • Then run ant at the base to generate the new docs and commit the changes to jakarta-site2. You will be committing the updated xdocs and html.
                      ant
                      cvs commit -m "update to reflect release of commons-httpclient"
                  
    • If you have an account on daedalus, log in and update the web site:
                      cd /www/jakarta.apache.org
                      cvs update index.html site
                  
  13. Update components.xml in the jakarta-commons/xdocs CVS and then build the docs by running ant (this may require some configuration). CVS commit, then if you have an account on daedalus, update the commons website with a cvs udpate in /www/jakarta.apache.org/commons.
  14. Announce the availability of the new package on the following mailing lists:
    • announcements@jakarta.apache.org
    • commons-dev@jakarta.apache.org
    • commons-user@jakarta.apache.org
    • commons-httpclient-dev@jakarta.apache.org

  15. Check in bugzilla for all bugs which have been marked LATER and update their status appropriately. If you need to have some changes made to bugzilla you can contact mvdb@apache.org

  16. Deploy the jar file to the ibiblio repository.
                maven jar:deploy