This guide is intended for JTS project maintainers, to assist them in preparing releases of the project.
-
Locate the Release Milestone for the release.
-
Apply this milestone Issues and PRs included in the release.
-
Update the Version History
-
Record significant changes (should have been done ongoing)
-
Enter date of release
-
-
Start an eclipse release process
Example review: 1.17.0-release-review page
-
Use the text from Version History to quickly write the describe the release.
-
Email review page to locationtech-pmc like this for PMC approval.
-
Email review page emo@eclipse.org when ready, to save time you can link to the PMC approval thread.
-
EMO opens a bug ticket like this to track progress
The release process takes around two weeks, and are scheduled for the 1st and 15th of each month.
-
On master:
-
Before you start check that the Maven build executes with no errors
mvn clean install
-
Set the version number in Java class:
org.locationtech.jts.JTSVersion
Change SNAPSHOT version:
private static final String RELEASE_INFO = "SNAPSHOT";
To release version:
private static final String RELEASE_INFO = "";
-
Update version number in Maven POMs (run the Maven release plugin at project root:
mvn versions:set -DnewVersion=1.19.0
-
Edit
build-tools/pom.xml
by hand, and compile to test.mvn clean install
-
Commit this change.
git add . git commit -m "Release version 1.19.0" git push
-
Tag this commit, and push the tag to GitHub.
git tag -a 1.19.0 -m "Release version 1.19.0" git push --tags
This is the commit that will form the GitHub release below.
-
Before you start double check that you have
gpg
installed and configured, with your public key distributed.References: Working with PGP Signatures
-
The
gpg-agent
will remember a passphrase for a short duration.To interact with the agent (so it asks you the passphrase):
gpg --use-agent --armor --detach-sign --output - pom.xml
Reference: Configuring GPG/PGP for Maven Releases to Sonatype on Mac OS X
-
Execute the final Maven release build which will sign jars:
mvn clean install -Drelease
-
Deploy to Maven Central, using credentials in your
~/.m2/settings.xml
:<server> <id>ossrh</id> <username>jira_user</username> <password>jira_password</password> </server>
Reference: Deploying to OSSRH with Apache Maven
-
Deploy to Maven Central with the release property and profile
mvn deploy -Drelease
-
Create a JTS GitHub release
-
Navigate to https://github.com/locationtech/jts/releases and use "Draft new Release" based on your tag.
-
Copy the release notes from
JTS_Version_History.md
Example: [1.17.0](https://github.com/locationtech/jts/releases/tag/1.17.0]
-
Add release artifacts (from the
target
folders):- jts-core-1.18.0-javadoc.jar
- jts-core-1.18.0-sources.jar
- jts-core-1.18.0.jar
- jts-io-common-1.18.0-javadoc.jar
- jts-io-common-1.18.0-sources.jar
- jts-io-common-1.18.0.jar
- JTSTestBuilder.jar
-
Tip: Mark as a draft release (until Eclipse review process completes)
-
Update Javadoc on JTS Github IO:
-
Javadoc is generated by the Maven build above.
-
Update branch
gh-pages
:cd .. git clone https://github.com/locationtech/jts.git jts-docs cd jts-docs git checkout --track origin/gh-pages git mv javadoc javadoc-1.18.0 git mv javadoc-io javadoc-io-1.18.0 cp -r ../jts/modules/core/target/apidocs/ javadoc cp -r ../jts/modules/io/common/target/apidocs javadoc-io
Edit
index.html
with new details:<li>Javadoc for JTS 1.19.0 ( <a href="javadoc/index.html" target="javadoc">jts-core</a> | <a href="javadoc-io/index.html" target="javadoc">jts-io-common</a>)</li> <li>Javadoc for JTS 1.18.0 ( <a href="javadoc-1.18.0/index.html" target="javadoc">jts-core</a> | <a href="javadoc-io-1.18.0/index.html" target="javadoc">jts-io-common</a>)</li>
Commit
git add . git commit -m "JTS 1.19.0 javadocs"
Update master to the next release version:
-
Set the version number in Java class:
org.locationtech.jts.JTSVersion
Change release version:
public static final int MAJOR = 1; public static final int MINOR = 19; public static final int PATCH = 0; private static final String RELEASE_INFO = "";
To next SNAPSHOT version:
public static final int MAJOR = 1; public static final int MINOR = 20; public static final int PATCH = 0; private static final String RELEASE_INFO = "SNAPSHOT";
-
Update version number in Maven POMs (run the Maven release plugin at project root:
mvn versions:set -DnewVersion=1.20.0-SNAPSHOT
-
Edit
build-tools/pom.xml
by hand, and compile to test.mvn clean install
-
Compile to test, and commit this change.
git add . git commit -m "Version 1.20.0-SNAPSHOT" git push
-
Add a new version entry to the Version History
- Message to JTS Dev mail list
- Comment on Gitter channel
- Social media?
- Others?