This page has been
moved to the new
HttpComponents Wiki.
The following steps are required to create and deploy a release version of the HttpClient library package. The example text consistently assumes that we are releasing version 3.0.1 of the package.
Pre Release
Announce your proposed release to the
httpcomponents-dev@jakarta.apache.org mailing list, and ask for a vote. Per the Jakarta Project charter, votes of Jakarta PMC members are considered binding. Assuming the vote is successful send an email to
httpcomponents-dev@jakarta.apache.org and
private@jakarta.apache.org with the outcome of the vote. Something like the following:
Subject: [VOTE][RESULT] Commons HttpClient 3.0.1 released The vote to release Commons HttpClient 3.0.1 has passed with the following results +1 Michael Becke <mbecke -at- apache.org> Ortwin Glück <oglueck -at- apache.org> Oleg Kalnichevski <olegk -at- apache.org> Roland Weber <rolandw -at- apache.org> --- Original thread: http://www.mail-archive.com/httpclient-dev%40jakarta.apache.org/msg03653.html
Building the Release
Documentation
Update release_notes.txt - This file should be updated when patches are committed, but sometimes is 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.
Update the project version number.
build.xml - change the property component.version
project.xml - change <currentVersion/> and add a <version/> element
src/java/org/apache/commons/httpclient/params/DefaultHttpParamsFactory.java - update the useragent string
doap_httpclient.rdf - update the <release> section
Update project site documentation.
xdocs/status.xml - change the current status text, the link to next release bugs, and the release info link
xdocs/downloads.xml - change the release number and date and the Maven dependency xml
xdocs/news.xml - add a news item for the release. This can be reused in the announcement email and the Jakarta site news.
Make sure you have at least version 1.10 of the maven-xdoc-plugin as previous versions are affected by a
bug. If not, update: maven plugin:download -DartifactId=maven-xdoc-plugin -DgroupId=maven -Dversion=1.10
Generate the HttpClient site locally and validate.
maven site:generate
Checkin all changes.
svn commit -m 'Changes for 3.0.1 release'
Release Package
Tag the code in SVN.
When releasing off a branch
svn copy -m "HttpClient release 3.0.1" https://svn.apache.org/repos/asf/jakarta/commons/proper/httpclient/branches/HTTPCLIENT_3_0_BRANCH https://svn.apache.org/repos/asf/jakarta/commons/proper/httpclient/tags/HTTPCLIENT_3_0_1
When releasing off the trunk
svn copy -m "HttpClient release 3.1-alpha1" https://svn.apache.org/repos/asf/jakarta/commons/proper/httpclient/trunk https://svn.apache.org/repos/asf/jakarta/commons/proper/httpclient/tags/HTTPCLIENT_3_1_ALPHA1
Make sure you running a 1.2 JVM. This is necessary to ensure that the generated binaries are 1.2 compatible.
Generate the binary packages.
maven httpclient:dist
Verify the contents of the generated packages.
Sign and checksum the generated packages (*.zip, *.tar.gz, and *.jar). Details for this are covered in the
Commons release documentation. Below is a quick Perl script to accomplish this.
#!/usr/bin/perl -w # signs and checksums all files given as command line args foreach my $file (@ARGV) { print $file."\n"; my $md5 = `md5sum $file`; `echo "$md5" > $file.md5`; $md5 =~ /(\w+)\s+/; $md5 = $1; # verify md5 my $testMd5 = `openssl md5 < $file`; chomp($testMd5); if ($testMd5 ne $md5) { die 'md5 does not equal'; } `gpg --armor --output $file.asc --detach-sig $file`; # verify signature `gpg --verify $file.asc $file` }Copy the release materials to your personal Apache web directory and invite the other HttpClient committers to test out the release packages before you continue.
Publishing the Release
Copy binary and source distributions into the HttpClient dist directory.
export DIST_DIR=/www/www.apache.org/dist/jakarta/commons/httpclient cp commons-httpclient-3.0.1-src* $DIST_DIR/source/ cp commons-httpclient-3.0.1.tar* commons-httpclient-3.0.1.zip* $DIST_DIR/binary/ cp release-notes.txt $DIST_DIR/RELEASE_NOTES.txt
Copy the jar and POM to the ibiblio dist directory.
export IBIBLIO_DIR=/www/people.apache.org/repo/m1-ibiblio-rsync-repository/commons-httpclient cp commons-httpclient-3.0.1.jar* $IBIBLIO_DIR/jars/ cp project.xml $IBIBLIO_DIR/poms/commons-httpclient-3.0.1.pom
Be sure that all files belong to the jakarta group and that they are group writable.
Updating the Jakarta website
Check out the
jakarta site directory from SVN. Update news.xml and xdocs/downloads/downloads.xml to.
Run ant from the site directory to regenerate the site docs.
Checkin the modified docs.
svn commit -m "Updates for the HttpClient 3.0.1 release"
From people.apache.org update the Jakarta site.
-
cd /www/jakarta.apache.org/ svn update
-
Redeploy the HttpClient site
maven -Dmaven.username=mbecke site:deploy
Accounce the release
Send an email announcing the release to the following lists:
The email should look something like the following:
Subject: [ANNOUNCEMENT] Commons HttpClient 3.0.1 Released The Jakarta Commons HttpClient project is pleased to announce the release of HttpClient 3.0.1. This version fixes a number of bugs found since the release of 3.0. All HttpClient users are encouraged to upgrade. Please download and enjoy. Download - <http://jakarta.apache.org/site/downloads/downloads_commons-httpclient.cgi> Release notes - <http://www.apache.org/dist/jakarta/commons/httpclient/RELEASE-NOTES.txt> HttpClient site - <http://jakarta.apache.org/commons/httpclient/> About HttpClient - Although the java.net package provides basic functionality for accessing resources via HTTP, it doesn't provide the full flexibility or functionality needed by many applications. The Jakarta Commons HttpClient component seeks to fill this void by providing an efficient, up-to-date, and feature-rich package implementing the client side of the most recent HTTP standards and recommendations. Enjoy, Commons HttpClient Team