Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 20 additions & 3 deletions .github/workflows/build-main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,49 +7,66 @@

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 }}
SIGNING_KEY: ${{ secrets.SIGNING_KEY }}
SIGNING_PASSWORD: ${{ secrets.SIGNING_PASSWORD }}
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:
go-version: stable
- name: Install Nats Server
run: |
pkill -9 nats-server 2>/dev/null || true
mkdir -p ~/.local/bin
cd $GITHUB_WORKSPACE
git clone https://github.com/nats-io/nats-server.git
cd nats-server
go build -o ~/.local/bin/nats-server
nats-server -v
- name: Check out code
uses: actions/checkout@v4
- name: Build and Test
run: chmod +x gradlew && ./gradlew clean test jacocoTestReport
- name: Verify Javadoc
run: ./gradlew javadoc
- name: Send coverage to Coveralls
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"
23 changes: 20 additions & 3 deletions .github/workflows/build-pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,43 +6,60 @@

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:
go-version: stable
- name: Install Nats Server
run: |
pkill -9 nats-server 2>/dev/null || true
mkdir -p ~/.local/bin
cd $GITHUB_WORKSPACE
git clone https://github.com/nats-io/nats-server.git
cd nats-server
go build -o ~/.local/bin/nats-server
nats-server -v
- name: Check out code
uses: actions/checkout@v4
- name: Build and Test
run: chmod +x gradlew && ./gradlew clean test jacocoTestReport
- name: Verify Javadoc
run: ./gradlew javadoc
- name: Send coverage to Coveralls
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"
18 changes: 11 additions & 7 deletions .github/workflows/build-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,44 +8,48 @@

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 }}
SIGNING_KEY: ${{ secrets.SIGNING_KEY }}
SIGNING_PASSWORD: ${{ secrets.SIGNING_PASSWORD }}
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:
go-version: stable
- name: Install Nats Server
run: |
pkill -9 nats-server 2>/dev/null || true
mkdir -p ~/.local/bin
cd $GITHUB_WORKSPACE
git clone https://github.com/nats-io/nats-server.git
cd nats-server
go build -o ~/.local/bin/nats-server
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

Check warning

Code scanning / CodeQL

Workflow does not contain permissions Medium

Actions job or workflow does not limit the permissions of the GITHUB_TOKEN. Consider setting an explicit permissions block, using the following as a minimal starting point: {contents: read}

108 changes: 102 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

[![License Apache 2](https://img.shields.io/badge/License-Apache2-blue.svg)](https://www.apache.org/licenses/LICENSE-2.0)
[![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.nats/jnats-server-runner/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.nats/jnats-server-runner)
[![Javadoc](http://javadoc.io/badge/io.nats/jnats-server-runner.svg?branch=main)](http://javadoc.io/doc/io.nats/jnats-server-runner?branch=main)
[![Coverage Status](https://coveralls.io/repos/github/nats-io/java-nats-server-runner/badge.svg?branch=main)](https://coveralls.io/github/nats-io/java-nats-server-runner?branch=main)
![3.0.2](https://img.shields.io/badge/Current_Release-3.0.2-27AAE0?style=for-the-badge)
![3.0.3](https://img.shields.io/badge/Current_Snapshot-3.0.3--SNAPSHOT-27AAE0?style=for-the-badge)

[![Build Main Badge](https://github.com/nats-io/java-nats-server-runner/actions/workflows/build-main.yml/badge.svg?event=push)](https://github.com/nats-io/java-nats-server-runner/actions/workflows/build-main.yml)
[![Release Badge](https://github.com/nats-io/java-nats-server-runner/actions/workflows/build-release.yml/badge.svg?event=release)](https://github.com/nats-io/java-nats-server-runner/actions/workflows/build-release.yml)
[![Coverage Status](https://coveralls.io/repos/github/nats-io/java-nats-server-runner/badge.svg?branch=main)](https://coveralls.io/github/nats-io/java-nats-server-runner?branch=main)
[![Javadoc](http://javadoc.io/badge/io.nats/jnats-server-runner.svg?branch=main)](http://javadoc.io/doc/io.nats/jnats-server-runner?branch=main)
[![License Apache 2](https://img.shields.io/badge/License-Apache2-blue)](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` | [![Maven JDK 1_8](https://img.shields.io/maven-central/v/io.nats/jnats-server-runner?label=)](https://mvnrepository.com/artifact/io.nats/jnats-server-runner) |
| 17 | `jnats-server-runner-jdk17` | [![Maven JDK 17](https://img.shields.io/maven-central/v/io.nats/jnats-server-runner-jdk17?label=)](https://mvnrepository.com/artifact/io.nats/jnats-server-runner-jdk17) |
| 21 | `jnats-server-runner-jdk21` | [![Maven JDK 21](https://img.shields.io/maven-central/v/io.nats/jnats-server-runner-jdk21?label=)](https://mvnrepository.com/artifact/io.nats/jnats-server-runner-jdk21) |
| 25 | `jnats-server-runner-jdk25` | [![Maven JDK 25](https://img.shields.io/maven-central/v/io.nats/jnats-server-runner-jdk25?label=)](https://mvnrepository.com/artifact/io.nats/jnats-server-runner-jdk25) |

Useful for running unit or integration tests on the localhost.

Expand Down Expand Up @@ -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
<dependency>
<groupId>io.nats</groupId>
<artifactId>jnats-server-runner</artifactId>
<version>3.0.3</version>
</dependency>
```

If you need the absolute latest, before it propagates to maven central, you can use the repository:

```xml
<repositories>
<repository>
<id>sonatype releases</id>
<url>https://repo1.maven.org/maven2/</url>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
```

If you need a snapshot version, you must enable snapshots and change your dependency.

```xml
<repositories>
<repository>
<id>sonatype snapshots</id>
<url>https://central.sonatype.com/repository/maven-snapshots</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>

<dependency>
<groupId>io.nats</groupId>
<artifactId>jnats-server-runner</artifactId>
<version>3.0.4-SNAPSHOT</version>
</dependency>
```

## License

Unless otherwise noted, the NATS source files are distributed
Expand Down
59 changes: 24 additions & 35 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -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
)
}
}
Expand All @@ -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 {
Expand All @@ -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"
Expand Down
12 changes: 0 additions & 12 deletions gradle/libs.versions.toml

This file was deleted.

Binary file modified gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
Loading
Loading