diff --git a/.github/workflows/build-main.yml b/.github/workflows/build-main.yml
index 15e4410..fc3871b 100644
--- a/.github/workflows/build-main.yml
+++ b/.github/workflows/build-main.yml
@@ -1,5 +1,6 @@
name: Build Main
-
+permissions:
+ contents: read
on:
push:
branches:
@@ -7,9 +8,13 @@ on:
jobs:
build:
+ strategy:
+ matrix:
+ tc: [ 8, 17, 21, 25 ]
runs-on: ubuntu-latest
env:
BUILD_EVENT: ${{ github.event_name }}
+ TARGET_COMPATIBILITY: ${{ matrix.tc }}
OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }}
OSSRH_PASSWORD: ${{ secrets.OSSRH_TOKEN }}
SIGNING_KEY_ID: ${{ secrets.SIGNING_KEY_ID }}
@@ -19,12 +24,12 @@ jobs:
- name: Setup JDK
uses: actions/setup-java@v5
with:
- java-version: '21'
+ java-version: 25
distribution: 'temurin'
- name: Setup Gradle
- uses: gradle/actions/setup-gradle@v4
+ uses: gradle/actions/setup-gradle@v5
with:
- gradle-version: '8.14' # Quotes required to prevent YAML converting to number
+ gradle-version: current
- name: Setup GO
uses: actions/setup-go@v5
with:
@@ -48,8 +53,21 @@ jobs:
uses: coverallsapp/github-action@v2
with:
github-token: ${{ secrets.COVERALLS_REPO_TOKEN }}
+ parallel: true
+ flag-name: tc${{ matrix.tc }}
- name: Publish Snapshot
run: ./gradlew -i publishToSonatype
- name: Clean up
if: always()
run: pkill -9 nats-server 2>/dev/null || true
+
+ coveralls-finish:
+ needs: build
+ runs-on: ubuntu-latest
+ steps:
+ - name: Coveralls Finish
+ uses: coverallsapp/github-action@v2
+ with:
+ github-token: ${{ secrets.GITHUB_TOKEN }}
+ parallel-finished: true
+ carryforward: "tc8"
\ No newline at end of file
diff --git a/.github/workflows/build-pr.yml b/.github/workflows/build-pr.yml
index 0d09dca..f47894e 100644
--- a/.github/workflows/build-pr.yml
+++ b/.github/workflows/build-pr.yml
@@ -1,25 +1,30 @@
name: Build Pull Request
-
+permissions:
+ contents: read
on:
pull_request:
types: [opened, synchronize, edited, reopened]
jobs:
build:
+ strategy:
+ matrix:
+ tc: [ 8, 17, 21, 25 ]
runs-on: ubuntu-latest
env:
BUILD_EVENT: ${{ github.event_name }}
+ TARGET_COMPATIBILITY: ${{ matrix.tc }}
COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }}
steps:
- name: Setup JDK
uses: actions/setup-java@v5
with:
- java-version: '21'
+ java-version: 25
distribution: 'temurin'
- name: Setup Gradle
- uses: gradle/actions/setup-gradle@v4
+ uses: gradle/actions/setup-gradle@v5
with:
- gradle-version: '8.14' # Quotes required to prevent YAML converting to number
+ gradle-version: current
- name: Setup GO
uses: actions/setup-go@v5
with:
@@ -43,6 +48,19 @@ jobs:
uses: coverallsapp/github-action@v2
with:
github-token: ${{ secrets.COVERALLS_REPO_TOKEN }}
+ parallel: true
+ flag-name: tc${{ matrix.tc }}
- name: Clean up
if: always()
run: pkill -9 nats-server 2>/dev/null || true
+
+ coveralls-finish:
+ needs: build
+ runs-on: ubuntu-latest
+ steps:
+ - name: Coveralls Finish
+ uses: coverallsapp/github-action@v2
+ with:
+ github-token: ${{ secrets.GITHUB_TOKEN }}
+ parallel-finished: true
+ carryforward: "tc8"
\ No newline at end of file
diff --git a/.github/workflows/build-release.yml b/.github/workflows/build-release.yml
index d819efe..3e77e5d 100644
--- a/.github/workflows/build-release.yml
+++ b/.github/workflows/build-release.yml
@@ -1,5 +1,6 @@
name: Build Release
-
+permissions:
+ contents: read
on:
release:
branches:
@@ -8,9 +9,13 @@ on:
jobs:
build:
+ strategy:
+ matrix:
+ tc: [ 8, 17, 21, 25 ]
runs-on: ubuntu-latest
env:
BUILD_EVENT: ${{ github.event_name }}
+ TARGET_COMPATIBILITY: ${{ matrix.tc }}
OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }}
OSSRH_PASSWORD: ${{ secrets.OSSRH_TOKEN }}
SIGNING_KEY_ID: ${{ secrets.SIGNING_KEY_ID }}
@@ -20,12 +25,12 @@ jobs:
- name: Setup JDK
uses: actions/setup-java@v5
with:
- java-version: '21'
+ java-version: 25
distribution: 'temurin'
- name: Setup Gradle
- uses: gradle/actions/setup-gradle@v4
+ uses: gradle/actions/setup-gradle@v5
with:
- gradle-version: '8.14' # Quotes required to prevent YAML converting to number
+ gradle-version: current
- name: Setup GO
uses: actions/setup-go@v5
with:
@@ -41,10 +46,10 @@ jobs:
nats-server -v
- name: Check out code
uses: actions/checkout@v4
- - name: Build and Test
- run: chmod +x gradlew && ./gradlew clean test
- - name: Verify, Sign and Publish Release
- run: ./gradlew -i publishToSonatype closeAndReleaseSonatypeStagingRepository
+ - name: Prepare Gradle Script
+ run: chmod +x gradlew && ./gradlew
+ - name: Build, Sign and Publish Release
+ run: ./gradlew clean compileJava publishToSonatype closeAndReleaseSonatypeStagingRepository
- name: Clean up
if: always()
run: pkill -9 nats-server 2>/dev/null || true
diff --git a/README.md b/README.md
index cd33779..960a5b4 100644
--- a/README.md
+++ b/README.md
@@ -4,14 +4,26 @@
Run the [NATS messaging system](https://nats.io) Server from your Java code.
-**Current Release**: 3.0.1 **Current Snapshot**: 3.0.2-SNAPSHOT
-[](https://www.apache.org/licenses/LICENSE-2.0)
-[](https://maven-badges.herokuapp.com/maven-central/io.nats/jnats-server-runner)
-[](http://javadoc.io/doc/io.nats/jnats-server-runner?branch=main)
-[](https://coveralls.io/github/nats-io/java-nats-server-runner?branch=main)
+
+
+
[](https://github.com/nats-io/java-nats-server-runner/actions/workflows/build-main.yml)
-[](https://github.com/nats-io/java-nats-server-runner/actions/workflows/build-release.yml)
+[](https://coveralls.io/github/nats-io/java-nats-server-runner?branch=main)
+[](http://javadoc.io/doc/io.nats/jnats-server-runner?branch=main)
+[](https://www.apache.org/licenses/LICENSE-2.0)
+
+### JDK Version
+
+This project uses Java 8 Language Level api, but builds jars compiled with and targeted for Java 8, 17, 21 and 25.
+It creates different artifacts for each. All have the same group id `io.nats` and the same version but have different artifact names.
+
+| Java Target Level | Artifact Id | Maven Central |
+|:-----------------:|-----------------------------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|
+| 1.8 | `jnats-server-runner` | [](https://mvnrepository.com/artifact/io.nats/jnats-server-runner) |
+| 17 | `jnats-server-runner-jdk17` | [](https://mvnrepository.com/artifact/io.nats/jnats-server-runner-jdk17) |
+| 21 | `jnats-server-runner-jdk21` | [](https://mvnrepository.com/artifact/io.nats/jnats-server-runner-jdk21) |
+| 25 | `jnats-server-runner-jdk25` | [](https://mvnrepository.com/artifact/io.nats/jnats-server-runner-jdk25) |
Useful for running unit or integration tests on the localhost.
@@ -78,6 +90,90 @@ static {
}
```
+### Dependency Management
+
+The JNATS Server Runner is available in the Maven central repository,
+and can be imported as a standard dependency in your `build.gradle` or `pom.xml` file,
+The examples shown use the Jdk 8 version. To use other versions, change the artifact id.
+
+#### Gradle
+
+```groovy
+dependencies {
+ implementation 'io.nats:jnats-server-runner:3.0.3'
+}
+```
+
+If you need the latest and greatest before Maven central updates, you can use:
+
+```groovy
+repositories {
+ mavenCentral()
+ maven {
+ url "https://repo1.maven.org/maven2/"
+ }
+}
+```
+
+If you need a snapshot version, you must add the url for the snapshots and change your dependency.
+
+```groovy
+repositories {
+ mavenCentral()
+ maven {
+ url "https://central.sonatype.com/repository/maven-snapshots"
+ }
+}
+
+dependencies {
+ implementation 'io.nats:jnats-server-runner:3.0.4-SNAPSHOT'
+}
+```
+
+#### Maven
+
+```xml
+
+ io.nats
+ jnats-server-runner
+ 3.0.3
+
+```
+
+If you need the absolute latest, before it propagates to maven central, you can use the repository:
+
+```xml
+
+
+ sonatype releases
+ https://repo1.maven.org/maven2/
+
+ true
+
+
+
+```
+
+If you need a snapshot version, you must enable snapshots and change your dependency.
+
+```xml
+
+
+ sonatype snapshots
+ https://central.sonatype.com/repository/maven-snapshots
+
+ true
+
+
+
+
+
+ io.nats
+ jnats-server-runner
+ 3.0.4-SNAPSHOT
+
+```
+
## License
Unless otherwise noted, the NATS source files are distributed
diff --git a/build.gradle b/build.gradle
index ee823bf..6b2bf95 100644
--- a/build.gradle
+++ b/build.gradle
@@ -5,30 +5,33 @@ plugins {
id("java-library")
id("maven-publish")
id("jacoco")
- id("biz.aQute.bnd.builder") version "7.1.0"
+ id("biz.aQute.bnd.builder") version "7.2.1"
id("org.gradle.test-retry") version "1.6.4"
id("io.github.gradle-nexus.publish-plugin") version "2.0.0"
id("signing")
}
-def jarVersion = "3.0.2"
+def jarVersion = "3.0.3"
group = 'io.nats'
def isRelease = System.getenv("BUILD_EVENT") == "release"
def tc = System.getenv("TARGET_COMPATIBILITY");
-def targetCompat = tc == "21" ? JavaVersion.VERSION_21 : (tc == "17" ? JavaVersion.VERSION_17 : JavaVersion.VERSION_1_8)
-def jarEnd = tc == "21" ? "-jdk21" : (tc == "17" ? "-jdk17" : "")
-def jarAndArtifactName = "jnats-server-runner" + jarEnd
+def targetJavaVersion = tc == null ? JavaVersion.VERSION_1_8 : JavaVersion.toVersion(tc)
+def targetId = targetJavaVersion.toString()
+def artifact = "jnats-server-runner" + (targetJavaVersion == JavaVersion.VERSION_1_8 ? "" : "-jdk" + targetId)
+def bundleName = "io.nats.jnats.server.runner" + (targetJavaVersion == JavaVersion.VERSION_1_8 ? "" : ".jdk" + targetId)
-version = isRelease ? jarVersion : jarVersion + "-SNAPSHOT" // version is the variable the build actually uses.
+System.out.println("target compatibility: Java " + targetJavaVersion)
+System.out.println("artifact id : " + artifact)
+System.out.println("bundle name : " + bundleName)
-System.out.println("Java: " + System.getProperty("java.version"))
-System.out.println("Target Compatibility: " + targetCompat)
-System.out.println(group + ":" + jarAndArtifactName + ":" + version)
+version = isRelease ? jarVersion : jarVersion + "-SNAPSHOT" // version is the variable the build actually uses.
java {
sourceCompatibility = JavaVersion.VERSION_1_8
- targetCompatibility = targetCompat
+ targetCompatibility = targetJavaVersion
+ withSourcesJar()
+ withJavadocJar()
}
repositories {
@@ -54,9 +57,9 @@ jar {
bundle {
bnd("Bundle-Name": "io.nats.jnats.server.runner",
"Bundle-Vendor": "nats.io",
- "Bundle-Description": "NATS.IO Java Server Runner",
+ "Bundle-Description": "Java NATS Server Runner",
"Bundle-DocURL": "https://github.com/nats-io/java-nats-server-runner",
- "Target-Compatibility": "Java " + targetCompat
+ "Target-Compatibility": "Java " + targetJavaVersion
)
}
}
@@ -80,26 +83,12 @@ javadoc {
failOnError = false
options.overview = 'src/main/javadoc/overview.html' // relative to source root
source = sourceSets.main.allJava
- title = "NATS.IO Java Server Runner"
+ title = "Java NATS Server Runner"
classpath = sourceSets.main.runtimeClasspath
}
-tasks.register('javadocJar', Jar) {
- archiveClassifier.set('javadoc')
- from javadoc
-}
-
-tasks.register('sourcesJar', Jar) {
- archiveClassifier.set('sources')
- from sourceSets.main.allSource
-}
-
-artifacts {
- archives javadocJar, sourcesJar
-}
-
jacoco {
- toolVersion = "0.8.12"
+ toolVersion = "0.8.13"
}
jacocoTestReport {
@@ -124,21 +113,21 @@ publishing {
publications {
mavenJava(MavenPublication) {
from components.java
- artifact sourcesJar
- artifact javadocJar
pom {
- name = jarAndArtifactName
- packaging = "jar"
- groupId = group
- artifactId = jarAndArtifactName
- description = "Java NATS.io Server Runner"
+ name = "Java NATS Server Runner"
+ description = "Java NATS Server Runner"
url = 'https://github.com/nats-io/java-nats-server-runner'
+
+ groupId = group
+ artifactId = artifact
+
licenses {
license {
name = 'The Apache License, Version 2.0'
url = 'http://www.apache.org/licenses/LICENSE-2.0.txt'
}
}
+
developers {
developer {
id = "synadia"
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
deleted file mode 100644
index 2cfe86a..0000000
--- a/gradle/libs.versions.toml
+++ /dev/null
@@ -1,12 +0,0 @@
-# This file was generated by the Gradle 'init' task.
-# https://docs.gradle.org/current/userguide/platforms.html#sub::toml-dependencies-format
-
-[versions]
-commons-math3 = "3.6.1"
-guava = "33.4.5-jre"
-junit-jupiter = "5.12.1"
-
-[libraries]
-commons-math3 = { module = "org.apache.commons:commons-math3", version.ref = "commons-math3" }
-guava = { module = "com.google.guava:guava", version.ref = "guava" }
-junit-jupiter = { module = "org.junit.jupiter:junit-jupiter", version.ref = "junit-jupiter" }
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
index 1b33c55..f8e1ee3 100644
Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index ca025c8..23449a2 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.1-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
diff --git a/gradlew b/gradlew
index 23d15a9..adff685 100644
--- a/gradlew
+++ b/gradlew
@@ -1,7 +1,7 @@
#!/bin/sh
#
-# Copyright © 2015-2021 the original authors.
+# Copyright © 2015 the original authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -114,7 +114,6 @@ case "$( uname )" in #(
NONSTOP* ) nonstop=true ;;
esac
-CLASSPATH="\\\"\\\""
# Determine the Java command to use to start the JVM.
@@ -172,7 +171,6 @@ fi
# For Cygwin or MSYS, switch paths to Windows format before running java
if "$cygwin" || "$msys" ; then
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
- CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
JAVACMD=$( cygpath --unix "$JAVACMD" )
@@ -212,7 +210,6 @@ DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
- -classpath "$CLASSPATH" \
-jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \
"$@"
diff --git a/gradlew.bat b/gradlew.bat
index db3a6ac..c4bdd3a 100644
--- a/gradlew.bat
+++ b/gradlew.bat
@@ -70,11 +70,10 @@ goto fail
:execute
@rem Setup the command line
-set CLASSPATH=
@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
:end
@rem End local scope for the variables with windows NT shell