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.JTSVersionChange 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.xmlby 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 --tagsThis is the commit that will form the GitHub release below.
-
Before you start double check that you have
gpginstalled and configured, with your public key distributed.References: Working with PGP Signatures
-
The
gpg-agentwill 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.xmlReference: 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.mdExample: [1.17.0](https://github.com/locationtech/jts/releases/tag/1.17.0]
-
Add release artifacts (from the
targetfolders):- 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.htmlwith 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.JTSVersionChange release version from (e.g.):
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 the 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.xmlmanually to update the main<versionentry:<version>1.20.1-SNAPSHOT</version>At this point
git statusshould show the following:modified: build-tools/pom.xml modified: modules/app/pom.xml modified: modules/core/pom.xml modified: modules/core/src/main/java/org/locationtech/jts/JTSVersion.java modified: modules/example/pom.xml modified: modules/io/common/pom.xml modified: modules/io/ora/pom.xml modified: modules/io/pom.xml modified: modules/lab/pom.xml modified: modules/pom.xml modified: modules/tests/pom.xml modified: pom.xml -
Compile the project to test the changes.
mvn clean installThe mvn execution log should show the new version, and the build artifacts in the
targetdirectories should be stamped with the new version number. -
If the build is good, commit the updates to initiate the next version:
git add . git commit -m "Version 1.20.0-SNAPSHOT" git push -
Add a new empty version entry to the Version History, ready to record revisions
- Message to JTS Dev mail list
- Comment on Gitter channel
- Social media?
- Others?