# JGraphT Release Process

1. Review the README.md, HISTORY.md, CONTRIBUTORS.md, and update:
   - Version
   - Dependencies
   - Release notes
   - Contributors
   - Copyright year
2. Review/update github issues to make sure they reflect the current state. If there were important bug/feature changes, it is worth mentioning them in the README.md release notes.
3. Run `mvn javadoc:aggregate` to build the javadoc and make sure it is generated without errors/warnings. Fix where necessary. Make sure Eclipse build is warning-free.
4. We used to run Checkstyle globally to make a "code quality review"; we may bring this back, and/or add PMD/FindBugs, and Emma for code coverage.
5. Run all the JUnit tests via `mvn test`. Fix where necessary.
6. Run `mvn jalopy:format` to reformat the code.
7. Commit all work and push to github.
8. Run `mvn clean deploy` to push the latest snapshot to Sonatype.
9. Run `mvn source:jar; mvn javadoc:jar; mvn release:prepare; mvn release:perform` to create the Maven artifacts and push them to Maven Central
10. Run `mvn javadoc:aggregate; mvn install` to produce the release archive distribution
11. Upload the release archive distribution to SF and add it using the File Release System.
12. Update the website with the latest javadocs.
13. Update the website with links to the new downloads, version numbers, etc. This involves uploading web/index.html (at least).
14. Announce the new version in the wiki and mailing lists; also click the File Release System notification button.
15. Update and commit the version number in HISTORY.md and all pom.xml files again to reflect the beginning of development for the next version.

| © Copyright 2005-2013, by Barak Naveh and Contributors. All rights reserved. |