From 5040c80ad38621f877b9481287cacee1ea80d184 Mon Sep 17 00:00:00 2001 From: Brandur Date: Mon, 26 Oct 2026 20:05:44 -0500 Subject: [PATCH] [java] Release v0.1.0 --- java/CHANGELOG.md | 12 ++++++++++++ java/README.md | 10 +++++----- java/cli/pom.xml | 6 +++--- .../test/java/com/riverqueue/cli/ExecutableIT.java | 2 +- java/conformance/bin/build.py | 4 ++-- java/conformance/bin/run.py | 2 +- java/conformance/candidate.json | 2 +- java/conformance/pom.xml | 2 +- .../java/com/riverqueue/conformance/Adapter.java | 2 +- java/conformance/src/main/resources/manifest.json | 2 +- java/docs/development.md | 2 +- java/pom.xml | 2 +- java/river/pom.xml | 2 +- 13 files changed, 31 insertions(+), 19 deletions(-) diff --git a/java/CHANGELOG.md b/java/CHANGELOG.md index e8014dc07..8f440d240 100644 --- a/java/CHANGELOG.md +++ b/java/CHANGELOG.md @@ -7,6 +7,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.1.0] - 2026-10-26 + +### Changed + +- First non-prerelease release of River for Java. +- Publish the parent POM, library, and CLI as complete GitHub release assets served anonymously through `https://riverqueue.com/maven`. Maven Central supplies third-party dependencies. [PR #1543](https://github.com/riverqueue/river/pull/1543). +- **Breaking:** Replace the shaded CLI `-all.jar` with a thin JAR. Install `river-java` with JBang or use Maven to download the CLI and its runtime dependencies; both paths support Postgres and SQLite. Existing published alpha.1 standalone JARs remain available. See the [CLI installation instructions](https://github.com/riverqueue/river/blob/java/v0.1.0/java/README.md#migration-cli). [PR #1543](https://github.com/riverqueue/river/pull/1543). + +### Fixed + +- The thin CLI JAR now reports its release version and supports `java -jar` when the runtime JARs are in a sibling `dependency/` directory, as produced by a source build. [PR #1543](https://github.com/riverqueue/river/pull/1543). + ## [0.1.0-alpha.1] - 2026-10-24 ### Added diff --git a/java/README.md b/java/README.md index 583b1f310..93994441a 100644 --- a/java/README.md +++ b/java/README.md @@ -1,12 +1,12 @@ # River for Java -Prerelease Java 21 client and worker runtime for River's Postgres and SQLite +Java 21 client and worker runtime for River's Postgres and SQLite schemas. Jobs are ordinary River jobs: another language can insert, cancel, retry, or work them using the same database. ## Installation -Java 21 or newer is required. Add `com.riverqueue:river:0.1.0-alpha.1` and a JDBC driver to your application's dependencies. Jackson 3 is included transitively. +Java 21 or newer is required. Add `com.riverqueue:river:0.1.0` and a JDBC driver to your application's dependencies. Jackson 3 is included transitively. ```xml @@ -21,7 +21,7 @@ Java 21 or newer is required. Add `com.riverqueue:river:0.1.0-alpha.1` and a JDB com.riverqueue river - 0.1.0-alpha.1 + 0.1.0 org.postgresql @@ -97,7 +97,7 @@ jbang app install --name river-java --java 21 \ --java-options=--enable-native-access=ALL-UNNAMED \ --repos https://riverqueue.com/maven --repos central \ --main com.riverqueue.cli.MigrationCli \ - com.riverqueue:river-cli:0.1.0-alpha.1 + com.riverqueue:river-cli:0.1.0 export PATH="$HOME/.jbang/bin:$PATH" export DATABASE_URL=postgres://localhost/myapp # For SQLite: export DATABASE_URL=jdbc:sqlite:/absolute/path/myapp.db @@ -163,7 +163,7 @@ cat > pom.xml <<'EOF' 4.0.0 localriver-cli-install1 riverhttps://riverqueue.com/maven - com.riverqueueriver-cli0.1.0-alpha.1 + com.riverqueueriver-cli0.1.0 EOF mvn --batch-mode --no-transfer-progress \ diff --git a/java/cli/pom.xml b/java/cli/pom.xml index 52fe00ab7..56bfa3704 100644 --- a/java/cli/pom.xml +++ b/java/cli/pom.xml @@ -1,11 +1,11 @@ 4.0.0 - com.riverqueueriver-java0.1.0-alpha.1../pom.xml - river-cli0.1.0-alpha.1 + com.riverqueueriver-java0.1.0../pom.xml + river-cli0.1.0 River Java migration CLI Executable database migration tool for River on Postgres and SQLite - com.riverqueueriver0.1.0-alpha.1 + com.riverqueueriver0.1.0 org.postgresqlpostgresql org.xerialsqlite-jdbc org.junit.jupiterjunit-jupitertest diff --git a/java/cli/src/test/java/com/riverqueue/cli/ExecutableIT.java b/java/cli/src/test/java/com/riverqueue/cli/ExecutableIT.java index fe6b57714..6783741f5 100644 --- a/java/cli/src/test/java/com/riverqueue/cli/ExecutableIT.java +++ b/java/cli/src/test/java/com/riverqueue/cli/ExecutableIT.java @@ -52,7 +52,7 @@ private String command(boolean executableJar, String... args) throws Exception { @ParameterizedTest @ValueSource(booleans = {false, true}) void thinJarRunsWithRuntimeDependencies(boolean executableJar) throws Exception { - assertEquals("river 0.1.0-alpha.1", command(executableJar, "--version").strip()); + assertEquals("river 0.1.0", command(executableJar, "--version").strip()); assertTrue(command(executableJar, "migrate-up").contains("008 [up]")); assertTrue(command(executableJar, "migrate-list").contains("applied")); assertTrue( diff --git a/java/conformance/bin/build.py b/java/conformance/bin/build.py index 3d1b53aa5..3fd9f9e5c 100644 --- a/java/conformance/bin/build.py +++ b/java/conformance/bin/build.py @@ -13,9 +13,9 @@ with (artifacts.parent / "build.lock").open("w") as lock: fcntl.flock(lock, fcntl.LOCK_EX) subprocess.run(["mvn", "-q", "-f", str(root / "pom.xml"), "package", "-DskipTests"], check=True) - jar = root / "conformance/target/river-conformance-0.1.0-alpha.1.jar" + jar = root / "conformance/target/river-conformance-0.1.0.jar" # A stale shaded jar can otherwise silently retain an older dependency's classes. - with zipfile.ZipFile(root / "river/target/river-0.1.0-alpha.1.jar") as library, zipfile.ZipFile(jar) as bundled: + with zipfile.ZipFile(root / "river/target/river-0.1.0.jar") as library, zipfile.ZipFile(jar) as bundled: for entry in library.namelist(): if entry.startswith("com/riverqueue/") and not entry.endswith("/"): if library.read(entry) != bundled.read(entry): diff --git a/java/conformance/bin/run.py b/java/conformance/bin/run.py index ba71d1479..d79c31bf4 100644 --- a/java/conformance/bin/run.py +++ b/java/conformance/bin/run.py @@ -53,7 +53,7 @@ def main(): manifest_path = reference / "conformance/manifest.json" manifest = json.loads(manifest_path.read_text()) manifest["implementations"]["java"] = { - "package": "com.riverqueue:river", "registry": "maven", "version": "0.1.0-alpha.1" + "package": "com.riverqueue:river", "registry": "maven", "version": "0.1.0" } manifest_path.write_text(json.dumps(manifest, indent=2) + "\n") environment = os.environ | { diff --git a/java/conformance/candidate.json b/java/conformance/candidate.json index 700a3a931..24a3f14d4 100644 --- a/java/conformance/candidate.json +++ b/java/conformance/candidate.json @@ -14,7 +14,7 @@ "postgres-full-v1", "sqlite-runtime-v1" ], - "version": "0.1.0-alpha.1", + "version": "0.1.0", "start_options": [ "elect_interval_ms", "rescuer_interval_ms", diff --git a/java/conformance/pom.xml b/java/conformance/pom.xml index b7d35fc46..fdb525a22 100644 --- a/java/conformance/pom.xml +++ b/java/conformance/pom.xml @@ -1,6 +1,6 @@ 4.0.0 - com.riverqueueriver-java0.1.0-alpha.1 + com.riverqueueriver-java0.1.0 river-conformance diff --git a/java/conformance/src/main/java/com/riverqueue/conformance/Adapter.java b/java/conformance/src/main/java/com/riverqueue/conformance/Adapter.java index 21a76d53c..9d5e18c6f 100644 --- a/java/conformance/src/main/java/com/riverqueue/conformance/Adapter.java +++ b/java/conformance/src/main/java/com/riverqueue/conformance/Adapter.java @@ -211,7 +211,7 @@ private JsonNode handle(String method, JsonNode params, String rawParams) throws database.dialect() == Database.Dialect.POSTGRES ? "postgres" : "sqlite"), Map.entry("capabilities", capabilities), Map.entry("implementation", "java"), - Map.entry("implementation_version", "0.1.0-alpha.1"), + Map.entry("implementation_version", "0.1.0"), Map.entry("methods", methods), Map.entry("migration_lines", Map.of("main", 8)), Map.entry("profile", profile), diff --git a/java/conformance/src/main/resources/manifest.json b/java/conformance/src/main/resources/manifest.json index 472e3bd89..2fae9cef1 100644 --- a/java/conformance/src/main/resources/manifest.json +++ b/java/conformance/src/main/resources/manifest.json @@ -50,7 +50,7 @@ "java": { "package": "com.riverqueue:river", "registry": "maven", - "version": "0.1.0-alpha.1" + "version": "0.1.0" } }, "migration": { diff --git a/java/docs/development.md b/java/docs/development.md index 2131479e3..42ca61d0e 100644 --- a/java/docs/development.md +++ b/java/docs/development.md @@ -57,7 +57,7 @@ needed. Stop if a command fails. Versions omit `v`; tags use `java/vVERSION`. ```sh git checkout master && git pull --rebase git fetch --tags - export VERSION=0.1.0-alpha.2 + export VERSION=0.1.1 git checkout -b "$USER-java-$VERSION" ``` diff --git a/java/pom.xml b/java/pom.xml index af0654302..efada6395 100644 --- a/java/pom.xml +++ b/java/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.riverqueue river-java - 0.1.0-alpha.1 + 0.1.0 pom River for Java Transactional jobs on Postgres and SQLite, interoperable with River clients in other languages diff --git a/java/river/pom.xml b/java/river/pom.xml index 43e195b4d..a2736ed8b 100644 --- a/java/river/pom.xml +++ b/java/river/pom.xml @@ -1,6 +1,6 @@ 4.0.0 - com.riverqueueriver-java0.1.0-alpha.1 + com.riverqueueriver-java0.1.0 river River for Java library Transactional jobs interoperable with River clients in other languages