diff --git a/README.md b/README.md
index fd09030..bdb5ec2 100644
--- a/README.md
+++ b/README.md
@@ -41,23 +41,22 @@ general purpose Java utilities from the Aviation Risk Identification and Assessm
### Early Open Sourcing checklist
- [ ] Add "CONTRIBUTION.md" rules
-- [ ] Add Roadmap
- - [ ] Then pivoting to Java 17
- - [ ] Removing pair and triple (only in Java 17+)
- [ ] (Re)Add code coverage
---
## Adopting!
-All official releases are available at [Maven Central](https://central.sonatype.com/artifact/org.mitre/commons).
-The latest official release is version: `0.0.58`
+- Adopting this Java library requires your project to be on Java 17 or later.
+- The latest official release is version: `0.0.59`
+- All official releases are available at [Maven Central](https://central.sonatype.com/artifact/org.mitre/commons).
+
#### Gradle
```
dependencies {
- implementation("org.mitre:commons:0.0.58")
+ implementation("org.mitre:commons:0.0.59")
}
```
@@ -67,7 +66,7 @@ dependencies {
org.mitre
commons
- 0.058
+ 0.059
```
diff --git a/build.gradle.kts b/build.gradle.kts
index 3053032..84eb0b3 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -5,7 +5,7 @@ plugins {
}
group = "org.mitre"
-version = "0.0.59-SNAPSHOT"
+version = "0.0.59"
repositories {
mavenCentral()
diff --git a/docs/publish-to-maven-central.md b/docs/publish-to-maven-central.md
index 858c2ba..59836ef 100644
--- a/docs/publish-to-maven-central.md
+++ b/docs/publish-to-maven-central.md
@@ -16,24 +16,38 @@ intentionally un-automated to ensure releases are always highly intentional acti
**The Goal: Manually create an "asset bundle" we can upload to maven central**
-- Official "how-to" documentation is [here](https://central.sonatype.org/publish/publish-manual/)
-- The final `bundle.jar` must be suitable for `maven central` (Developer list, SCM Urls, Project Description, etc.)
+- Official "how-to" documentation is [here](https://central.sonatype.org/publish/publish-portal-upload/)
+ - Older, partially out-dated (but still useful) "how-to" documentation is [here](https://central.sonatype.org/publish/publish-manual/)
+- The final `.pom` must be suitable for `maven central` (Developer list, SCM Urls, Project Description, etc.)
- Make build must create these resource:
- `software-libary.jar`
- `software-libary.pom`
- `software-libary-source.jar`
- `software-libary-javadoc.jar`
-- **Action:** Sign all artifacts with gpg
+- **Action:** Sign all 4 artifacts with gpg
- **Run:** `gpg -ab commons-X.Y.Z.jar`
- **Run:** `gpg -ab commons-X.Y.Z.pom`
- **Run:** `gpg -ab commons-X.Y.Z-sources.jar`
- **Run:** `gpg -ab commons-X.Y.Z-javadoc.jar`
-- **Action:** Bundle all the artifacts into one jar.
+- **Action:** Generate the MD5 checksum of all 4 artifacts
+ - **Run:** `md5sum commons-X.Y.Z.jar | cut -d " " -f 1 > commons-X.Y.Z.jar.md5`
+ - **Run:** `md5sum commons-X.Y.Z.pom | cut -d " " -f 1 > commons-X.Y.Z.jar.md5`
+ - **Run:** `md5sum commons-X.Y.Z-sources.jar | cut -d " " -f 1 > commons-X.Y.Z-sources.jar.md5`
+ - **Run:** `md5sum commons-X.Y.Z-javadoc.jar | cut -d " " -f 1 > commons-X.Y.Z-javadoc.jar.md5`
+- **Action:** Generate the SHA1 checksum of all 4 artifacts
+ - **Run:** `sha1sum commons-X.Y.Z.jar | cut -d " " -f 1 > commons-X.Y.Z.jar.sha1`
+ - **Run:** `sha1sum commons-X.Y.Z.pom | cut -d " " -f 1 > commons-X.Y.Z.jar.sha1`
+ - **Run:** `sha1sum commons-X.Y.Z-sources.jar | cut -d " " -f 1 > commons-X.Y.Z-sources.jar.sha1`
+ - **Run:** `sha1sum commons-X.Y.Z-javadoc.jar | cut -d " " -f 1 > commons-X.Y.Z-javadoc.jar.sha1`
+- **Action:** Bundle all the artifacts into one .zip file.
+ - `mkdir -p org/mitre/commons/X.Y.Z`
+ - `cp commons-X.Y.Z* org/mitre/commons/X.Y.Z`
+ - create the `.zip` file
+ - Name the `.zip` whatever you like. This is the file that gets uploaded to the portal
- **Run:**
`jar -cvf bundle.jar commons-X.Y.Z-javadoc.jar commons-X.Y.Z-javadoc.jar.asc commons-X.Y.Z-sources.jar commons-X.Y.Z-sources.jar.asc commons-X.Y.Z.jar commons-X.Y.Z.jar.asc commons-X.Y.Z.pom commons-X.Y.Z.pom.asc`
- This creates the artifact bundle: `bundle.jar`
-- Log into `oss.sonatype.org`
- - Select `Staging Upload` and provide your `bundle.jar`
- - **ALERT:** Sometimes this upload produces an "upload failed" dialog even when the upload was successful
- - Select `Staging Repositories` and find the bundle you just uploaded. The artifact repo should list all the checks
- the bundle went through.
+- Log into `https://central.sonatype.com/`
+ - Select `Publish`
+ - Upload your .zip
+ - Wait for system to verify your upload. It will require jar, pom, sources, docs, md5 checksums, sha1 checksums, pgp signatures.
diff --git a/docs/release-notes.md b/docs/release-notes.md
index 372f5b4..cb858fd 100644
--- a/docs/release-notes.md
+++ b/docs/release-notes.md
@@ -1,12 +1,21 @@
# Release Notes
+### Version 0.0.59 (Released 2025-05-21)
+
+- **Migrated to Java 17**
+- Added `AltitudePath`, `VehiclePath`, and `PathPair`.
+ - These classes are designed to be `Key` types used in [DistanceTrees](https://github.com/mitre-public/dist-tree)
+- `YyyyMmDd` added `plus` and `minus` methods
+- Added `CheckedRunnable` and `CheckedCallable` to automatically demote checked exceptions and allow using methods that
+ throw Checked Exceptions to be used in standard java lambda places
### Version 0.0.58 (Released 2025-04-05)
+
- Added LeftMerger utility class
- Added `Time.enclosingTimeWindow(Collection times)`
- `MapBuilder` has new convenience functions for certain `MapFeatures`
- Multi-line Strings
- - draw circles (Supports `Collection`, `LatLongPath`, and `LatLong64Path`)
+ - draw circles (Supports `Collection`, `LatLongPath`, and `LatLong64Path`)
- draw paths (Supports `Collection`, `LatLongPath`, and `LatLong64Path`)
- `ReservoirSampler` now implements the `Consumer` interface
- Patched a flawed constructor in `LatLong64Path`