| POI Release Guide | |
| (I) Prerequisites | |
| 1. You should read the <a href="http://apache.org/dev/release.html">Apache Release FAQ</a> | |
| 2. You must have shell access to people.apache.org | |
| 3. Release manager must have his public key appended to the KEYS file checked in to SVN and the key published on one of the public key servers. | |
| More info can be found here: <a href="http://www.apache.org/dev/release-signing.html">http://www.apache.org/dev/release-signing.html</a> | |
| 4. You must have <a href="java.sun.com">JDK 1.4 / 1.5</a> | |
| 5. You must have the following utilities installed on your local machine and available in your path: | |
| * <a href="www.openssh.com">ssh</a> | |
| * <a href="www.gnupg.org">gnupg</a> | |
| * <a href="www.openssl.org">openssl</a> | |
| For Windows users, install Cygwin and make sure you have the above utilities | |
| 6. The POI build system requires two components to perform a build | |
| * <a href="ant.apache.org">Ant</a> | |
| * <a href="http://forrest.apache.org/">Forrest</a>. | |
| POI 3.0.2 and 3.1 were built using Ant 1.6.2 and Forrest 0.5 | |
| (II) Making release artefacts | |
| 1. Update version id in build.xml | |
| {code:xml} | |
| <property name="version.id" value="3.1-beta1"/> | |
| {code} | |
| 2. Tag current version. Include the current revision number in the comment | |
| {code} | |
| $ svn cp https://svn.apache.org/repos/asf/poi/trunk \ | |
| https://svn.apache.org/repos/asf/poi/tags/$TAG \ | |
| -m "tag r649911 as 3.1-beta1" | |
| {code} | |
| where $TAG is the release tag, for example, REL_3_1_BETA1 | |
| 3. Checkout the tagged version | |
| {code} | |
| cd tags | |
| svn checkout https://svn.apache.org/repos/asf/poi/tags/$TAG | |
| {code} | |
| 4. Merge (if required) | |
| {code} | |
| cd $TAG | |
| $ svn merge https://svn.apache.org/repos/asf/poi/tags/$TAG \ | |
| https://svn.apache.org/repos/asf/poi/trunk | |
| {code} | |
| 5. Start a new section in sites.xml and status.xml. | |
| 6. Build as if the vote had passed. The build date must be +7 days from current. | |
| {code} | |
| ant build | |
| {code} | |
| After build you should have the following files in the build/dist: | |
| {code} | |
| poi-$TAG-$DATE.jar | |
| poi-bin-$TAG-$DATE.tar.gz | |
| poi-bin-$TAG-$DATE.zip | |
| poi-contrib-$TAG-$DATE.jar | |
| poi-scratchpad-$TAG-$DATE.jar | |
| poi-src-$TAG-$DATE.tar.gz | |
| poi-src-$TAG-$DATE.zip | |
| {code} | |
| where $TAG is the release tag specified in build.xml in the version.id property, $DATE is the release date (typically +7 days from the actual build date). | |
| 7. Build Mavn POM files | |
| {code} | |
| ant maven-dist | |
| {code} | |
| 8. Signing the release artifacts: | |
| {code} | |
| cd build/dist | |
| for i in *.zip ; do | |
| gpg --armor --output $i.asc --detach-sig $i; | |
| done | |
| for i in *.gz ; do | |
| gpg --armor --output $i.asc --detach-sig $i; | |
| done | |
| {code} | |
| Verify the signatures: | |
| {code} | |
| gpg --multifile --verify *.asc | |
| {code} | |
| 9. Create MD5 checksums for all artifacts to be published: | |
| {code} | |
| for i in *.zip ; do | |
| openssl md5 < $i > $i.md5 | |
| done | |
| for i in *.gz ; do | |
| openssl md5 < $i > $i.md5 | |
| done | |
| {code} | |
| 10. Upload to your area at people.apache.org. | |
| There should be two directories: | |
| main | |
| maven | |
| Make sure that the all files have read permission. | |
| (III) After the vote: | |
| Log-in on people.apache.org | |
| 1. Go to ~/POI-3.1-BETA1 | |
| zap previous version first. | |
| {code} | |
| cd ~/POI-3.1-BETA1/main | |
| {code} | |
| BETA and ALPHA releases: | |
| {code} | |
| cp *-src-* /www/www.apache.org/dist/poi/dev/src | |
| cp *-bin-* /www/www.apache.org/dist/poi/dev/bin | |
| {code} | |
| FINAL release: | |
| {code} | |
| cp *-src-* /www/www.apache.org/dist/poi/release/src | |
| cp *-bin-* /www/www.apache.org/dist/poi/release/bin | |
| {code} | |
| {code} | |
| cd ~/POI-3.1-BETA1/maven | |
| cp -r org.apache.poi /www/people.apache.org/repo/m1-ibiblio-rsync-repository/ | |
| cp -r poi/poms /www/people.apache.org/repo/m1-ibiblio-rsync-repository/poi | |
| {code} | |
| 2. Make sure that the files are owned by the unix group apcvs and that they are writable by this group. | |
| 3. Wait for the distributions to appear on your favourite mirror | |
| 4. test maven | |
| create a simple project and make sure the release artifacts are accessible by maven: | |
| {code} | |
| $ mvn archetype:create -DgroupId=org.apache.poi.scratchpad -DartifactId=maven-test | |
| cd maven-test | |
| {code} | |
| edit pom.xml and add the release artefacts to the project dependencies: | |
| {code:xml} | |
| <dependency> | |
| <groupId>org.apache.poi</groupId> | |
| <artifactId>poi</artifactId> | |
| <version>3.1-beta1</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.apache.poi</groupId> | |
| <artifactId>poi-scratchpad</artifactId> | |
| <version>3.1-beta1</version> | |
| </dependency> | |
| {code} | |
| {code} | |
| mvn compile | |
| {code} | |
| You should see [INFO] BUILD SUCCESSFUL in the end. | |
| 5. Don't forget to upload the latest version of the site and javadocs | |
| 6. Send announcements: | |
| - to poi-user and poi-dev lists | |
| - to announcement@apache.org, announcements@jakarta.apache.org | |
| Note, announcements should be sent from your @apache.org e-mail address. | |