This page describes the current status of the release process.
Make sure code is up to date and everything is committed and pushed with git:
$ mvn clean $ git pull $ git status
Checklist for release preparation:
src/main/resources/rulesets/releases/<version>.xml file.
$ mvn clean verify post-site #(order of targets DOES matter)
Unzip and test manually (just to be on the safe side of the road):
cd target; unzip pmd-bin-<version>.zip; cd pmd-bin-<version> ./bin/run.sh pmd -d ../../src/main/java -language java -f xml -R rulesets/java/unusedcode.xml ./bin/run.sh pmd -d ../../src/main/java -language java -f xml -R java-unusedcode ./bin/run.sh pmd -d ../../src/main/java -language java -f html -R rulesets/java/unusedcode.xml cd ..; cd ..
Check in all (version) changes to branch master:
$ git commit -a -m "pmd: Prepare pmd release <version>"
Let's have maven create a release branch for us (note - this is of course not needed if you are already on a release/maintenance branch). Maven will automatically increase the version in branch master.
$ mvn release:branch -DbranchName=pmd/<version>.x
$ mvn -DupdateBranchVersions=true -DupdateWorkingCopyVersions=false ...
Note: The property pushChanges is set to false, so that we can manually push all changes done during the release at the end, when we are sure, that everything is fine.
Now checkout the created branch.
$ git checkout pmd/<version>.x
Now let maven create a release tag.
$ mvn release:clean $ mvn release:prepare
Note: For the tag/label name we currently use this naming pattern: pmd_releases/<major-version>.<minor-version>.<micro-version>
The next command will checkout PMD from the tag just created and will build and deploy it to sonatype OSS repositories:
$ mvn release:perform
If everything is fine, you can push your local changes.
$ git push origin master $ git push origin pmd/<version>.x $ git push origin tag pmd_releases/<version>
Note:
If you see a bug and fix it, you can rollback the release (see http://maven.apache.org/plugins/maven-release-plugin/examples/rollback-release.html):
$ mvn release:rollback
You probably need to delete the release tag manually using the following command (and then start again with release:clean release:prepare):
$ git tag -d pmd_releases/<version>
Under https://sourceforge.net/p/pmd/bugs/ rename the bug milestone "PMD-next" to "PMD-<version>" and create a new "PMD-next" milestone.
Finally, in order to publish the release to Maven central, you need to release PMD via Sonatype Nexus:
Build it again - you can reuse the cleanly checked out local repository from maven-release-plugin.
In order to be able to upload the site to sourceforge, you need to have a interactive shell opened before.
Upload command below will create and upload maven site. Login info for 'pmd-site' must be defined in ~/.m2/settings.xml (see the file available in maven-plugin-pmd-build/config/m2.settings.xml):
$ ssh your_sf_login,pmd@shell.sourceforge.net create ... $ cd target/checkout/pmd $ mvn clean verify site-deploy -Psf-release # it's import to execute verify, so that pmd.jar is created and included in the zip packages ... $ ssh your_sf_login@shell.sourceforge.net "shutdown"
cd target; unzip pmd-bin-<version>.zip; cd pmd-bin-<version> ./bin/run.sh pmd -d ../../src/main/java -language java -f xml -R rulesets/java/unusedcode.xml ./bin/run.sh pmd -d ../../src/main/java -language java -f xml -R java-unusedcode ./bin/run.sh pmd -d ../../src/main/java -language java -f html -R rulesets/java/unusedcode.xml cd ..; cd ..
$ rsync -avhP target/pmd-*-<version>.zip your_sf_login@web.sourceforge.net:/home/frs/project/pmd/pmd/<version>/ $ rsync -avhP src/site/markdown/changelog.md your_sf_login@web.sourceforge.net:/home/frs/project/pmd/pmd/<version>/ReadMe.txt
$ md5sum target/pmd-*-<version>.zip
Upload changes to pmd.sourceforge.net
cd ../pmd.sourceforge.net rsync -avhpz \ --exclude=bin/ \ --exclude=src/ \ --exclude=.classpath \ --exclude=.project \ --exclude=.git \ \ ./ your_sf_login@web.sourceforge.net:/home/project-web/pmd/htdocs/
PMD <version> released * minor version with lots of bug fixes * Changelog: http://pmd.sourceforge.net/pmd-<version>/changelog.html * Download: https://sourceforge.net/projects/pmd/files/pmd/<version>/ * Fixed Bugs: https://sourceforge.net/p/pmd/bugs/milestone/PMD-<version>/ * Documentation: http://pmd.sourceforge.net/pmd-<version>/