diff --git a/.github/CompatibilityUtils.java b/.build/CompatibilityUtils.java
similarity index 100%
rename from .github/CompatibilityUtils.java
rename to .build/CompatibilityUtils.java
diff --git a/.github/Helper.java b/.build/Helper.java
similarity index 100%
rename from .github/Helper.java
rename to .build/Helper.java
diff --git a/.github/PreRelease.java b/.build/PreRelease.java
similarity index 100%
rename from .github/PreRelease.java
rename to .build/PreRelease.java
diff --git a/.github/PulsarConfigDoc.java b/.build/PulsarConfigDoc.java
similarity index 98%
rename from .github/PulsarConfigDoc.java
rename to .build/PulsarConfigDoc.java
index 78c394e96e..c3b5a52998 100755
--- a/.github/PulsarConfigDoc.java
+++ b/.build/PulsarConfigDoc.java
@@ -34,7 +34,7 @@
* - Config file (whether the property is settable from a configuration file
* - Default value
*
- * Run with `.github/PulsarConfigDoc.java -d documentation/src/main/docs/pulsar/config`
+ * Run with `.build/PulsarConfigDoc.java -d documentation/src/main/docs/pulsar/config`
*
*/
@CommandLine.Command(name = "pulsar-config-doc", mixinStandardHelpOptions = true, version = "0.1",
diff --git a/.github/ci-maven-settings.xml b/.build/ci-maven-settings.xml
similarity index 100%
rename from .github/ci-maven-settings.xml
rename to .build/ci-maven-settings.xml
diff --git a/.github/maven-settings.xml.gpg b/.build/maven-settings.xml.gpg
similarity index 100%
rename from .github/maven-settings.xml.gpg
rename to .build/maven-settings.xml.gpg
diff --git a/.github/smallrye-sign.asc.gpg b/.build/smallrye-sign.asc.gpg
similarity index 100%
rename from .github/smallrye-sign.asc.gpg
rename to .build/smallrye-sign.asc.gpg
diff --git a/.github/PostRelease.java b/.github/PostRelease.java
deleted file mode 100755
index 9d70f27989..0000000000
--- a/.github/PostRelease.java
+++ /dev/null
@@ -1,164 +0,0 @@
-///usr/bin/env jbang "$0" "$@" ; exit $?
-//DEPS org.kohsuke:github-api:1.117
-//DEPS info.picocli:picocli:4.5.0
-//SOURCES Helper.java
-
-import org.kohsuke.github.*;
-import picocli.CommandLine;
-
-import java.io.File;
-import java.io.IOException;
-import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
-import java.util.List;
-import java.util.Optional;
-import java.util.concurrent.Callable;
-import java.util.stream.Collectors;
-
-import static helpers.Helper.*;
-
-/**
- * Script run after the release.
- * The script does the following action in this order:
- * - checks that the previous milestone is closed, close it if not
- * - checks that the next milestone exists, or create it if not
- * - creates the Github release and compute the release notes
- *
- * Run with `./PostRelease.java --token=GITHUB_TOKEN --release-version=version
- *
- * 1. The github token is mandatory.
- *
- * The version is taken from the last tag if not set.
- */
-@CommandLine.Command(name = "post-release", mixinStandardHelpOptions = true, version = "0.1",
- description = "Post-Release Check")
-public class PostRelease implements Callable {
-
- @CommandLine.Option(names = "--token", description = "The Github Token", required = true)
- private String token;
-
- @CommandLine.Option(names = "--release-version", description = "Set the released version", required = true)
- private String releaseVersion;
-
- private static final String REPO = "smallrye/smallrye-reactive-messaging";
-
- public static void main(String... args) {
- int exitCode = new CommandLine(new PostRelease()).execute(args);
- System.exit(exitCode);
- }
-
- @Override
- public Integer call() throws Exception {
- GitHub gitHub = new GitHubBuilder().withOAuthToken(token).build();
- GHRepository repository = gitHub.getRepository(REPO);
-
- List tags = repository.listTags().toList();
- List milestones = repository.listMilestones(GHIssueState.ALL).toList();
-
- info("Running post-release checks for release %s", releaseVersion);
-
- // Check that the tag associated with the release version exists
- GHTag tag = getTag(releaseVersion, tags);
-
- assert tag != null;
-
- // Check that the milestone exists (this check has already been done during the pre-release checks, just to be double sure)
- GHMilestone milestone = milestones.stream().filter(m -> m.getTitle().equals(releaseVersion)).findFirst()
- .orElse(null);
- failIfTrue(() -> milestone == null, "Unable to find the milestone %s", releaseVersion);
- assert milestone != null;
- success("Milestone %s found (%s)", milestone.getTitle(), milestone.getHtmlUrl());
-
- success("Post-release check successful");
- info("Starting post-release tasks");
-
- // Close milestone
- if (milestone.getState() != GHMilestoneState.CLOSED) {
- milestone.close();
- success("Milestone %s closed (%s)", milestone.getTitle(), milestone.getHtmlUrl());
- } else {
- success("Milestone %s already closed (%s)", milestone.getTitle(), milestone.getHtmlUrl());
- }
-
- // Compute next version
- String nextVersion = getNextVersion(releaseVersion);
- success("Next version will be %s", nextVersion);
-
- // Create new milestone if it does not already exist
- GHMilestone nextMilestone = milestones.stream().filter(m -> m.getTitle().equals(nextVersion)).findFirst()
- .orElse(null);
- if (nextMilestone != null) {
- success("Next milestone (%s) already exists: %s", nextMilestone.getTitle(), nextMilestone.getHtmlUrl());
- } else {
- nextMilestone = repository.createMilestone(nextVersion, null);
- success("Next milestone (%s) created: %s", nextMilestone.getTitle(), nextMilestone.getHtmlUrl());
- }
-
- // Compute the release notes and create releases
- List issues = repository.getIssues(GHIssueState.CLOSED, milestone);
- String description = createReleaseDescription(issues);
- // Check if release already exists
- GHRelease existingRelease = repository.getReleaseByTagName(tag.getName());
- if (existingRelease != null) {
- info("Release %s already exists (%s) - skip release note generation", existingRelease.getName(), existingRelease.getHtmlUrl());
- info("Generated release notes:\n%s", description);
-
- if (existingRelease.isDraft()) {
- existingRelease.update().draft(false);
- success("Marked release %s as non-draft", existingRelease.getName());
- }
- } else {
- GHRelease release = repository.createRelease(releaseVersion)
- .name(releaseVersion)
- .body(description)
- .create();
- success("Release %s created: %s", releaseVersion, release.getHtmlUrl());
- }
-
- completed("Post-Release done!");
-
- return 0;
- }
-
- private GHTag getTag(String releaseVersion, List tags) {
- failIfTrue(tags::isEmpty, "No tags found in repository");
- Optional first = tags.stream().filter(tag -> tag.getName().equals(releaseVersion)).findFirst();
- if (first.isPresent()) {
- success("Tag %s found", releaseVersion);
- return first.get();
- }
- fail("Unable to find the tag %s in the repository", releaseVersion);
- return null;
- }
-
- private String getNextVersion(String v) {
- String[] segments = v.split("\\.");
- if (segments.length < 3) {
- fail("Invalid version %s, number of segments must be at least 3, found %d", v, segments.length);
- }
-
- return String.format("%s.%d.0", segments[0], Integer.parseInt(segments[1]) + 1);
- }
-
- private String createReleaseDescription(List issues) throws IOException {
- File file = new File("target/differences.md");
- String compatibility = "";
- if (file.isFile()) {
- compatibility += new String(Files.readAllBytes(file.toPath()), StandardCharsets.UTF_8);
- }
-
- StringBuilder desc = new StringBuilder();
- desc.append("### Changelog\n\n");
- List list = issues.stream().map(this::line).collect(Collectors.toList());
- desc.append(String.join("\n", list));
- desc.append("\n");
-
- desc.append(compatibility).append("\n");
- return desc.toString();
- }
-
- private String line(GHIssue issue) {
- return String.format(" * [#%d](%s) - %s", issue.getNumber(), issue.getHtmlUrl(), issue.getTitle());
- }
-
-}
diff --git a/.github/decrypt-secrets.sh b/.github/decrypt-secrets.sh
deleted file mode 100644
index f8159b76e1..0000000000
--- a/.github/decrypt-secrets.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env bash
-
-echo "Decrypting smallrye signature"
-gpg --quiet --batch --yes --decrypt --passphrase="${SECRET_FILES_PASSPHRASE}" \
- --output smallrye-sign.asc .github/smallrye-sign.asc.gpg
-
-echo "Decrypting Maven settings"
-gpg --quiet --batch --yes --decrypt --passphrase="${SECRET_FILES_PASSPHRASE}" \
- --output maven-settings.xml .github/maven-settings.xml.gpg
diff --git a/.github/deploy-doc.sh b/.github/deploy-doc.sh
deleted file mode 100755
index cc0dbb9279..0000000000
--- a/.github/deploy-doc.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/usr/bin/env bash
-set -e
-
-VERSION=${1:-"$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)"}
-REMOTE=${2:-"origin"}
-REMOTE_URL=$(git remote get-url "${REMOTE}")
-
-echo "Deploying documentation version ${VERSION} to remote ${REMOTE} (${REMOTE_URL})"
-
-echo "Configuring environment"
-cd documentation
-pipenv install
-
-echo "Publishing"
-mvn -B clean compile
-pipenv run mike deploy --update-aliases --push --remote "${REMOTE}" "${VERSION}" "latest"
-pipenv --rm
-
-echo "Done"
diff --git a/.github/deploy.sh b/.github/deploy.sh
deleted file mode 100644
index 5e121c36c8..0000000000
--- a/.github/deploy.sh
+++ /dev/null
@@ -1,101 +0,0 @@
-#!/usr/bin/env bash
-set -e
-
-export TARGET=$1
-
-init_gpg() {
- gpg2 --fast-import --no-tty --batch --yes smallrye-sign.asc
-}
-
-init_git() {
- git config --global user.name "${GITHUB_ACTOR}"
- git config --global user.email "smallrye@googlegroups.com"
-
- git update-index --assume-unchanged .github/deploy.sh
- git update-index --assume-unchanged .github/decrypt-secrets.sh
- git update-index --assume-unchanged .github/deploy-doc.sh
-}
-
-compatibility_extract() {
- echo "Extracting compatibility report"
- jbang .github/CompatibilityUtils.java extract
-}
-
-compatibility_clear() {
- echo "Clearing difference justifications"
- jbang .github/CompatibilityUtils.java clear
- if [[ $(git diff --stat) != '' ]]; then
- git add -A
- git status
- git commit -m "[POST-RELEASE] - Clearing breaking change justifications"
- git push origin main
- else
- echo "No justifications cleared"
- fi
-}
-
-deploy_release() {
- export RELEASE_VERSION=""
- export BRANCH="HEAD"
- export NEXT_VERSION=""
-
- if [ -f /tmp/release-version ]; then
- RELEASE_VERSION=$(cat /tmp/release-version)
- else
- echo "'/tmp/release-version' required"
- exit 1
- fi
-
- echo "Cutting release ${RELEASE_VERSION}"
- mvn -B -fn clean
- git checkout ${BRANCH}
- HASH=$(git rev-parse --verify $BRANCH)
- echo "Last commit is ${HASH} - creating detached branch"
- git checkout -b "r${RELEASE_VERSION}" "${HASH}"
-
- echo "Update version to ${RELEASE_VERSION}"
- mvn -B versions:set -DnewVersion="${RELEASE_VERSION}" -DgenerateBackupPoms=false -s maven-settings.xml
- mvn -B clean verify -DskipTests -Prelease -s maven-settings.xml
-
- git commit -am "[RELEASE] - Bump version to ${RELEASE_VERSION}"
- git tag "${RELEASE_VERSION}"
- echo "Pushing tag to origin"
- git push origin "${RELEASE_VERSION}"
-
- echo "Deploying release artifacts"
- mvn -B deploy -DskipTests -Prelease -s maven-settings.xml
-
- echo "Building documentation"
- .github/deploy-doc.sh
-
- if [ -f /tmp/next-version ]; then
- NEXT_VERSION=$(cat /tmp/next-version)
- echo "Setting main version to ${NEXT_VERSION}-SNAPSHOT"
- git reset --hard
- git checkout main
- mvn -B versions:set -DnewVersion="${NEXT_VERSION}-SNAPSHOT" -DgenerateBackupPoms=false -s maven-settings.xml
- git commit -am "[RELEASE] - Bump main branch to ${NEXT_VERSION}-SNAPSHOT"
- git push origin main
- echo "Main branch updated"
- else
- echo "No next version - skip updating the main version"
- fi
-}
-
-init_git
-init_gpg
-
-if [[ ${TARGET} == "release" ]]; then
- echo "Checking release prerequisites"
- echo "Milestone set to ${MILESTONE}"
- .github/Prelease.java --token="${GITHUB_TOKEN}" --release-version="${MILESTONE}"
-
- deploy_release
-
- echo "Executing post-release"
- compatibility_extract
- .github/PostRelease.java --token="${GITHUB_TOKEN}"
- compatibility_clear
-else
- echo "Unknown environment: ${TARGET}"
-fi
diff --git a/.github/workflows/build-main-branches.yml b/.github/workflows/build-main-branches.yml
index dfd4079f34..80c1c644de 100644
--- a/.github/workflows/build-main-branches.yml
+++ b/.github/workflows/build-main-branches.yml
@@ -53,7 +53,7 @@ jobs:
env:
MAVEN_OPTS: ${{ matrix.java.opts }}
run: |
- mvn -s .github/ci-maven-settings.xml -Dmaven.resolver.transport=wagon -B \
+ mvn -s .build/ci-maven-settings.xml -Dmaven.resolver.transport=wagon -B \
clean install -Dtest-containers=true ${{ matrix.java.build_opts }}
quality:
@@ -76,7 +76,7 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_LOGIN }}
run: |
- mvn -s .github/ci-maven-settings.xml -B \
+ mvn -s .build/ci-maven-settings.xml -B \
clean install sonar:sonar -Pcoverage \
-Dmaven.resolver.transport=wagon \
-Drevapi.skip=true \
diff --git a/.github/workflows/build-podman.yml b/.github/workflows/build-podman.yml
index d39f480099..51704eed1e 100644
--- a/.github/workflows/build-podman.yml
+++ b/.github/workflows/build-podman.yml
@@ -72,5 +72,5 @@ jobs:
env:
MAVEN_OPTS: ${{ matrix.java.opts }}
run: |
- mvn -s .github/ci-maven-settings.xml -Dmaven.resolver.transport=wagon -B \
+ mvn -s .build/ci-maven-settings.xml -Dmaven.resolver.transport=wagon -B \
clean install -Dtest-containers=true ${{ matrix.java.build_opts }}
diff --git a/.github/workflows/build-pull.yml b/.github/workflows/build-pull.yml
index 73532f91e1..64d7e3a451 100644
--- a/.github/workflows/build-pull.yml
+++ b/.github/workflows/build-pull.yml
@@ -52,7 +52,7 @@ jobs:
env:
MAVEN_OPTS: ${{ matrix.java.opts }}
run: |
- mvn -s .github/ci-maven-settings.xml -Dmaven.resolver.transport=wagon \
+ mvn -s .build/ci-maven-settings.xml -Dmaven.resolver.transport=wagon \
-B clean install -Pcoverage -Dtest-containers=true ${{ matrix.java.build_opts }}
- name: Codecov
uses: codecov/codecov-action@v1.0.13
diff --git a/.github/workflows/push-release-to-maven-central.yml b/.github/workflows/push-release-to-maven-central.yml
new file mode 100644
index 0000000000..b5d3382f5a
--- /dev/null
+++ b/.github/workflows/push-release-to-maven-central.yml
@@ -0,0 +1,25 @@
+name: Push a release to Maven Central
+
+on:
+ push:
+ tags:
+ - '4.*'
+
+jobs:
+ deploy:
+ runs-on: ubuntu-latest
+ env:
+ SECRET_FILES_PASSPHRASE: ${{ secrets.SECRET_FILES_PASSPHRASE }}
+ steps:
+ - name: Git checkout
+ uses: actions/checkout@v4
+ - name: Java setup
+ uses: actions/setup-java@v4
+ with:
+ java-version: '17'
+ distribution: 'temurin'
+ cache: maven
+ - name: Install just
+ uses: taiki-e/install-action@just
+ - name: Deploy to Maven Central
+ run: just deploy-to-maven-central
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 0000000000..5d98e3b38d
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,61 @@
+name: Release Smallrye Reactive Messaging
+
+on:
+ workflow_dispatch:
+ inputs:
+ previousVersion:
+ description: 'Previous version'
+ required: true
+ version:
+ description: 'Release version'
+ required: true
+ deployWebsite:
+ description: 'Shall we deploy the website?'
+ required: true
+ default: 'true'
+ clearRevAPI:
+ description: 'Shall we clear RevAPI justifications?'
+ required: true
+ default: 'true'
+
+jobs:
+ release:
+ runs-on: ubuntu-latest
+ env:
+ GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }}
+ RELEASE_TOKEN: ${{ secrets.RELEASE_TOKEN }}
+ SECRET_FILES_PASSPHRASE: ${{ secrets.SECRET_FILES_PASSPHRASE }}
+ RELEASE_VERSION: ${{ github.event.inputs.version }}
+ DEPLOY_WEBSITE: ${{ github.event.inputs.deployWebsite }}
+ CLEAR_REVAPI: ${{ github.event.inputs.clearRevAPI }}
+ JRELEASER_TAG_NAME: ${{ github.event.inputs.version }}
+ JRELEASER_PREVIOUS_TAG_NAME: ${{ github.event.inputs.previousVersion }}
+ JRELEASER_GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }}
+
+ steps:
+ - name: Git checkout
+ uses: actions/checkout@v4
+ with:
+ fetch-depth: 0
+ token: ${{ secrets.RELEASE_TOKEN }}
+ - name: Java setup
+ uses: actions/setup-java@v4
+ with:
+ java-version: '17'
+ distribution: 'temurin'
+ cache: maven
+ - name: Install just
+ uses: taiki-e/install-action@just
+ - name: Setup Python
+ uses: actions/setup-python@v5
+ with:
+ python-version: 3.9
+ cache: 'pipenv'
+ cache-dependency-path: documentation/Pipfile.lock
+ - name: Install pipenv
+ run: pip install pipenv
+ - name: Perform the release steps
+ run: |
+ curl -s "https://get.sdkman.io?rcupdate=false" | bash
+ source ~/.sdkman/bin/sdkman-init.sh && sdk install jbang
+ just perform-release
diff --git a/.mvn/wrapper/maven-wrapper.jar b/.mvn/wrapper/maven-wrapper.jar
new file mode 100644
index 0000000000..cb28b0e37c
Binary files /dev/null and b/.mvn/wrapper/maven-wrapper.jar differ
diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties
new file mode 100644
index 0000000000..d8b2495a1e
--- /dev/null
+++ b/.mvn/wrapper/maven-wrapper.properties
@@ -0,0 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.1/apache-maven-3.9.1-bin.zip
+wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar
diff --git a/api/pom.xml b/api/pom.xml
index 46b48ac084..1407e43e1f 100644
--- a/api/pom.xml
+++ b/api/pom.xml
@@ -5,7 +5,7 @@
io.smallrye.reactive
smallrye-reactive-messaging
- 4.19.0-SNAPSHOT
+ 999-SNAPSHOT
smallrye-reactive-messaging-api
diff --git a/documentation/pom.xml b/documentation/pom.xml
index 0f6924af1b..03842ab774 100644
--- a/documentation/pom.xml
+++ b/documentation/pom.xml
@@ -7,7 +7,7 @@
io.smallrye.reactive
smallrye-reactive-messaging
- 4.19.0-SNAPSHOT
+ 999-SNAPSHOT
documentation
diff --git a/examples/amqp-quickstart/pom.xml b/examples/amqp-quickstart/pom.xml
index 4b45bbc371..a5ac29f868 100644
--- a/examples/amqp-quickstart/pom.xml
+++ b/examples/amqp-quickstart/pom.xml
@@ -5,7 +5,7 @@
io.smallrye.reactive
smallrye-reactive-messaging
- 4.19.0-SNAPSHOT
+ 999-SNAPSHOT
../../pom.xml
diff --git a/examples/kafka-quickstart-kotlin/pom.xml b/examples/kafka-quickstart-kotlin/pom.xml
index 8dfc2ef172..48d32bc600 100644
--- a/examples/kafka-quickstart-kotlin/pom.xml
+++ b/examples/kafka-quickstart-kotlin/pom.xml
@@ -5,7 +5,7 @@
io.smallrye.reactive
smallrye-reactive-messaging
- 4.19.0-SNAPSHOT
+ 999-SNAPSHOT
../../pom.xml
diff --git a/examples/kafka-quickstart/pom.xml b/examples/kafka-quickstart/pom.xml
index 550a496d0e..2c16744d72 100644
--- a/examples/kafka-quickstart/pom.xml
+++ b/examples/kafka-quickstart/pom.xml
@@ -5,7 +5,7 @@
io.smallrye.reactive
smallrye-reactive-messaging
- 4.19.0-SNAPSHOT
+ 999-SNAPSHOT
../../pom.xml
diff --git a/examples/mqtt-quickstart/pom.xml b/examples/mqtt-quickstart/pom.xml
index 0436bdb469..253a84bfe6 100644
--- a/examples/mqtt-quickstart/pom.xml
+++ b/examples/mqtt-quickstart/pom.xml
@@ -5,7 +5,7 @@
io.smallrye.reactive
smallrye-reactive-messaging
- 4.19.0-SNAPSHOT
+ 999-SNAPSHOT
../../pom.xml
diff --git a/examples/quickstart/pom.xml b/examples/quickstart/pom.xml
index f6db00388b..4d2b740760 100644
--- a/examples/quickstart/pom.xml
+++ b/examples/quickstart/pom.xml
@@ -5,7 +5,7 @@
io.smallrye.reactive
smallrye-reactive-messaging
- 4.19.0-SNAPSHOT
+ 999-SNAPSHOT
../../pom.xml
reactive-messaging-quickstart
diff --git a/examples/rabbitmq-quickstart/pom.xml b/examples/rabbitmq-quickstart/pom.xml
index 4ec9e8eda9..775fea6c30 100644
--- a/examples/rabbitmq-quickstart/pom.xml
+++ b/examples/rabbitmq-quickstart/pom.xml
@@ -5,7 +5,7 @@
io.smallrye.reactive
smallrye-reactive-messaging
- 4.19.0-SNAPSHOT
+ 999-SNAPSHOT
../../pom.xml
diff --git a/justfile b/justfile
new file mode 100755
index 0000000000..0720e12605
--- /dev/null
+++ b/justfile
@@ -0,0 +1,116 @@
+set shell := ["bash", "-uc"]
+
+# Just echo the purpose of this file
+_default:
+ @echo "This file is used to automate some release tasks"
+ @echo "(running in `pwd`)"
+ @just --list
+
+# Build locally without tests
+build:
+ @echo "Building locally without tests"
+ ./mvnw clean install -DskipTests -T1C
+
+# Build locally with tests
+test:
+ @echo "Testing locally"
+ ./mvnw clean verify
+
+# Build on CI without tests
+build-ci:
+ ./mvnw -B -ntp -s .build/ci-maven-settings.xml clean verify -DskipTests
+
+# Test on CI with tests
+test-ci:
+ ./mvnw -B -ntp -s .build/ci-maven-settings.xml clean verify
+
+# Perform a release
+perform-release: pre-release release post-release
+ @echo "🎉 Successfully released Smallrye Reactive Messaging ${RELEASE_VERSION} 🚀"
+
+# Decrypt secrets
+decrypt-secrets:
+ @if [[ -z "${SECRET_FILES_PASSPHRASE}" ]]; then exit 1; fi
+ @echo "🔐 Decrypting smallrye signature"
+ gpg --quiet --batch --yes --decrypt --passphrase="${SECRET_FILES_PASSPHRASE}" \
+ --output smallrye-sign.asc .build/smallrye-sign.asc.gpg
+ @echo "🔐 Decrypting Maven settings"
+ gpg --quiet --batch --yes --decrypt --passphrase="${SECRET_FILES_PASSPHRASE}" \
+ --output maven-settings.xml .build/maven-settings.xml.gpg
+
+# Initialize GnuPG
+init-gpg:
+ @echo "🔐 GnuPG setup"
+ gpg --fast-import --no-tty --batch --yes smallrye-sign.asc
+
+# Initialize Git
+init-git:
+ @echo "🔀 Git setup"
+ git config --global user.name "smallrye-ci"
+ git config --global user.email "smallrye@googlegroups.com"
+
+# Steps before releasing
+pre-release: decrypt-secrets init-gpg init-git
+ @echo "🚀 Pre-release steps..."
+ @if [[ -z "${RELEASE_TOKEN}" ]]; then exit 1; fi
+ @if [[ -z "${RELEASE_VERSION}" ]]; then exit 1; fi
+ @echo "Pre-release verifications"
+ jbang .build/PreRelease.java --token=${RELEASE_TOKEN} --release-version=${RELEASE_VERSION}
+ @echo "Bump project version to ${RELEASE_VERSION}"
+ ./mvnw -B -ntp versions:set -DnewVersion=${RELEASE_VERSION} -DgenerateBackupPoms=false -s .build/ci-maven-settings.xml
+ @echo "Check that the project builds (no tests)"
+ ./mvnw -B -ntp clean install -Prelease -DskipTests -s maven-settings.xml
+ @echo "Check that the website builds"
+ -[[ ${DEPLOY_WEBSITE} == "true" ]] && cd documentation && pipenv install && pipenv run mkdocs build
+
+# Steps to release
+release: pre-release
+ @echo "🚀 Release steps..."
+ @if [[ -z "${JRELEASER_TAG_NAME}" ]]; then exit 1; fi
+ @if [[ -z "${JRELEASER_PREVIOUS_TAG_NAME}" ]]; then exit 1; fi
+ @if [[ -z "${JRELEASER_GITHUB_TOKEN}" ]]; then exit 1; fi
+ @echo "Commit release version and push upstream"
+ git commit -am "[RELEASE] - Bump version to ${RELEASE_VERSION}"
+ git push
+ jbang .build/CompatibilityUtils.java extract
+ @echo "Call JReleaser"
+ ./mvnw -B -ntp jreleaser:full-release -Pjreleaser -pl :smallrye-reactive-messaging -s .build/ci-maven-settings.xml
+ @echo "Bump to 999-SNAPSHOT and push upstream"
+ ./mvnw -B -ntp versions:set -DnewVersion=999-SNAPSHOT -DgenerateBackupPoms=false -s .build/ci-maven-settings.xml
+ git commit -am "[RELEASE] - Next development version: 999-SNAPSHOT"
+ git push
+
+# Deploy to Maven Central
+deploy-to-maven-central: decrypt-secrets init-gpg
+ @echo "🔖 Deploy to Maven Central"
+ ./mvnw -B -ntp deploy -Prelease -DskipTests -s maven-settings.xml
+
+# Steps post-release
+post-release:
+ @echo "🚀 Post-release steps..."
+ -[[ ${CLEAR_REVAPI} == "true" ]] && just clear-revapi
+ -[[ ${DEPLOY_WEBSITE} == "true" ]] && just deploy-docs
+
+# Update Pulsar Connector Configuration Documentation
+update-pulsar-config-docs:
+ @echo "📝 Updating Pulsar connector configuration docs"
+ jbang .build/PulsarConfigDoc.java -d documentation/src/main/docs/pulsar/config
+
+# Deploy documentation
+deploy-docs:
+ @echo "📝 Deploying documentation to GitHub"
+ @if [[ -z "${RELEASE_VERSION}" ]]; then exit 1; fi
+ ./mvnw -B -ntp clean compile -f documentation && cd documentation && pipenv install && pipenv run mike deploy --update-aliases --push --remote origin "${RELEASE_VERSION}" "latest"
+
+# Clear RevAPI justifications
+clear-revapi:
+ #!/usr/bin/env bash
+ jbang .build/CompatibilityUtils.java clear
+ if [[ $(git diff --stat) != '' ]]; then
+ git add -A
+ git status
+ git commit -m "[POST-RELEASE] - Clearing breaking change justifications"
+ git push
+ else
+ echo "No justifications cleared"
+ fi
diff --git a/mvnw b/mvnw
new file mode 100755
index 0000000000..8d937f4c14
--- /dev/null
+++ b/mvnw
@@ -0,0 +1,308 @@
+#!/bin/sh
+# ----------------------------------------------------------------------------
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+# ----------------------------------------------------------------------------
+
+# ----------------------------------------------------------------------------
+# Apache Maven Wrapper startup batch script, version 3.2.0
+#
+# Required ENV vars:
+# ------------------
+# JAVA_HOME - location of a JDK home dir
+#
+# Optional ENV vars
+# -----------------
+# MAVEN_OPTS - parameters passed to the Java VM when running Maven
+# e.g. to debug Maven itself, use
+# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
+# MAVEN_SKIP_RC - flag to disable loading of mavenrc files
+# ----------------------------------------------------------------------------
+
+if [ -z "$MAVEN_SKIP_RC" ] ; then
+
+ if [ -f /usr/local/etc/mavenrc ] ; then
+ . /usr/local/etc/mavenrc
+ fi
+
+ if [ -f /etc/mavenrc ] ; then
+ . /etc/mavenrc
+ fi
+
+ if [ -f "$HOME/.mavenrc" ] ; then
+ . "$HOME/.mavenrc"
+ fi
+
+fi
+
+# OS specific support. $var _must_ be set to either true or false.
+cygwin=false;
+darwin=false;
+mingw=false
+case "$(uname)" in
+ CYGWIN*) cygwin=true ;;
+ MINGW*) mingw=true;;
+ Darwin*) darwin=true
+ # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
+ # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
+ if [ -z "$JAVA_HOME" ]; then
+ if [ -x "/usr/libexec/java_home" ]; then
+ JAVA_HOME="$(/usr/libexec/java_home)"; export JAVA_HOME
+ else
+ JAVA_HOME="/Library/Java/Home"; export JAVA_HOME
+ fi
+ fi
+ ;;
+esac
+
+if [ -z "$JAVA_HOME" ] ; then
+ if [ -r /etc/gentoo-release ] ; then
+ JAVA_HOME=$(java-config --jre-home)
+ fi
+fi
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched
+if $cygwin ; then
+ [ -n "$JAVA_HOME" ] &&
+ JAVA_HOME=$(cygpath --unix "$JAVA_HOME")
+ [ -n "$CLASSPATH" ] &&
+ CLASSPATH=$(cygpath --path --unix "$CLASSPATH")
+fi
+
+# For Mingw, ensure paths are in UNIX format before anything is touched
+if $mingw ; then
+ [ -n "$JAVA_HOME" ] && [ -d "$JAVA_HOME" ] &&
+ JAVA_HOME="$(cd "$JAVA_HOME" || (echo "cannot cd into $JAVA_HOME."; exit 1); pwd)"
+fi
+
+if [ -z "$JAVA_HOME" ]; then
+ javaExecutable="$(which javac)"
+ if [ -n "$javaExecutable" ] && ! [ "$(expr "\"$javaExecutable\"" : '\([^ ]*\)')" = "no" ]; then
+ # readlink(1) is not available as standard on Solaris 10.
+ readLink=$(which readlink)
+ if [ ! "$(expr "$readLink" : '\([^ ]*\)')" = "no" ]; then
+ if $darwin ; then
+ javaHome="$(dirname "\"$javaExecutable\"")"
+ javaExecutable="$(cd "\"$javaHome\"" && pwd -P)/javac"
+ else
+ javaExecutable="$(readlink -f "\"$javaExecutable\"")"
+ fi
+ javaHome="$(dirname "\"$javaExecutable\"")"
+ javaHome=$(expr "$javaHome" : '\(.*\)/bin')
+ JAVA_HOME="$javaHome"
+ export JAVA_HOME
+ fi
+ fi
+fi
+
+if [ -z "$JAVACMD" ] ; then
+ if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ else
+ JAVACMD="$(\unset -f command 2>/dev/null; \command -v java)"
+ fi
+fi
+
+if [ ! -x "$JAVACMD" ] ; then
+ echo "Error: JAVA_HOME is not defined correctly." >&2
+ echo " We cannot execute $JAVACMD" >&2
+ exit 1
+fi
+
+if [ -z "$JAVA_HOME" ] ; then
+ echo "Warning: JAVA_HOME environment variable is not set."
+fi
+
+# traverses directory structure from process work directory to filesystem root
+# first directory with .mvn subdirectory is considered project base directory
+find_maven_basedir() {
+ if [ -z "$1" ]
+ then
+ echo "Path not specified to find_maven_basedir"
+ return 1
+ fi
+
+ basedir="$1"
+ wdir="$1"
+ while [ "$wdir" != '/' ] ; do
+ if [ -d "$wdir"/.mvn ] ; then
+ basedir=$wdir
+ break
+ fi
+ # workaround for JBEAP-8937 (on Solaris 10/Sparc)
+ if [ -d "${wdir}" ]; then
+ wdir=$(cd "$wdir/.." || exit 1; pwd)
+ fi
+ # end of workaround
+ done
+ printf '%s' "$(cd "$basedir" || exit 1; pwd)"
+}
+
+# concatenates all lines of a file
+concat_lines() {
+ if [ -f "$1" ]; then
+ # Remove \r in case we run on Windows within Git Bash
+ # and check out the repository with auto CRLF management
+ # enabled. Otherwise, we may read lines that are delimited with
+ # \r\n and produce $'-Xarg\r' rather than -Xarg due to word
+ # splitting rules.
+ tr -s '\r\n' ' ' < "$1"
+ fi
+}
+
+log() {
+ if [ "$MVNW_VERBOSE" = true ]; then
+ printf '%s\n' "$1"
+ fi
+}
+
+BASE_DIR=$(find_maven_basedir "$(dirname "$0")")
+if [ -z "$BASE_DIR" ]; then
+ exit 1;
+fi
+
+MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}; export MAVEN_PROJECTBASEDIR
+log "$MAVEN_PROJECTBASEDIR"
+
+##########################################################################################
+# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
+# This allows using the maven wrapper in projects that prohibit checking in binary data.
+##########################################################################################
+wrapperJarPath="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar"
+if [ -r "$wrapperJarPath" ]; then
+ log "Found $wrapperJarPath"
+else
+ log "Couldn't find $wrapperJarPath, downloading it ..."
+
+ if [ -n "$MVNW_REPOURL" ]; then
+ wrapperUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar"
+ else
+ wrapperUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar"
+ fi
+ while IFS="=" read -r key value; do
+ # Remove '\r' from value to allow usage on windows as IFS does not consider '\r' as a separator ( considers space, tab, new line ('\n'), and custom '=' )
+ safeValue=$(echo "$value" | tr -d '\r')
+ case "$key" in (wrapperUrl) wrapperUrl="$safeValue"; break ;;
+ esac
+ done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties"
+ log "Downloading from: $wrapperUrl"
+
+ if $cygwin; then
+ wrapperJarPath=$(cygpath --path --windows "$wrapperJarPath")
+ fi
+
+ if command -v wget > /dev/null; then
+ log "Found wget ... using wget"
+ [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--quiet"
+ if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
+ wget $QUIET "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath"
+ else
+ wget $QUIET --http-user="$MVNW_USERNAME" --http-password="$MVNW_PASSWORD" "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath"
+ fi
+ elif command -v curl > /dev/null; then
+ log "Found curl ... using curl"
+ [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--silent"
+ if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
+ curl $QUIET -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath"
+ else
+ curl $QUIET --user "$MVNW_USERNAME:$MVNW_PASSWORD" -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath"
+ fi
+ else
+ log "Falling back to using Java to download"
+ javaSource="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.java"
+ javaClass="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.class"
+ # For Cygwin, switch paths to Windows format before running javac
+ if $cygwin; then
+ javaSource=$(cygpath --path --windows "$javaSource")
+ javaClass=$(cygpath --path --windows "$javaClass")
+ fi
+ if [ -e "$javaSource" ]; then
+ if [ ! -e "$javaClass" ]; then
+ log " - Compiling MavenWrapperDownloader.java ..."
+ ("$JAVA_HOME/bin/javac" "$javaSource")
+ fi
+ if [ -e "$javaClass" ]; then
+ log " - Running MavenWrapperDownloader.java ..."
+ ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$wrapperUrl" "$wrapperJarPath") || rm -f "$wrapperJarPath"
+ fi
+ fi
+ fi
+fi
+##########################################################################################
+# End of extension
+##########################################################################################
+
+# If specified, validate the SHA-256 sum of the Maven wrapper jar file
+wrapperSha256Sum=""
+while IFS="=" read -r key value; do
+ case "$key" in (wrapperSha256Sum) wrapperSha256Sum=$value; break ;;
+ esac
+done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties"
+if [ -n "$wrapperSha256Sum" ]; then
+ wrapperSha256Result=false
+ if command -v sha256sum > /dev/null; then
+ if echo "$wrapperSha256Sum $wrapperJarPath" | sha256sum -c > /dev/null 2>&1; then
+ wrapperSha256Result=true
+ fi
+ elif command -v shasum > /dev/null; then
+ if echo "$wrapperSha256Sum $wrapperJarPath" | shasum -a 256 -c > /dev/null 2>&1; then
+ wrapperSha256Result=true
+ fi
+ else
+ echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available."
+ echo "Please install either command, or disable validation by removing 'wrapperSha256Sum' from your maven-wrapper.properties."
+ exit 1
+ fi
+ if [ $wrapperSha256Result = false ]; then
+ echo "Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised." >&2
+ echo "Investigate or delete $wrapperJarPath to attempt a clean download." >&2
+ echo "If you updated your Maven version, you need to update the specified wrapperSha256Sum property." >&2
+ exit 1
+ fi
+fi
+
+MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin; then
+ [ -n "$JAVA_HOME" ] &&
+ JAVA_HOME=$(cygpath --path --windows "$JAVA_HOME")
+ [ -n "$CLASSPATH" ] &&
+ CLASSPATH=$(cygpath --path --windows "$CLASSPATH")
+ [ -n "$MAVEN_PROJECTBASEDIR" ] &&
+ MAVEN_PROJECTBASEDIR=$(cygpath --path --windows "$MAVEN_PROJECTBASEDIR")
+fi
+
+# Provide a "standardized" way to retrieve the CLI args that will
+# work with both Windows and non-Windows executions.
+MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $*"
+export MAVEN_CMD_LINE_ARGS
+
+WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
+
+# shellcheck disable=SC2086 # safe args
+exec "$JAVACMD" \
+ $MAVEN_OPTS \
+ $MAVEN_DEBUG_OPTS \
+ -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
+ "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
+ ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"
diff --git a/mvnw.cmd b/mvnw.cmd
new file mode 100644
index 0000000000..c4586b564e
--- /dev/null
+++ b/mvnw.cmd
@@ -0,0 +1,205 @@
+@REM ----------------------------------------------------------------------------
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+@REM ----------------------------------------------------------------------------
+
+@REM ----------------------------------------------------------------------------
+@REM Apache Maven Wrapper startup batch script, version 3.2.0
+@REM
+@REM Required ENV vars:
+@REM JAVA_HOME - location of a JDK home dir
+@REM
+@REM Optional ENV vars
+@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
+@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending
+@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
+@REM e.g. to debug Maven itself, use
+@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
+@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
+@REM ----------------------------------------------------------------------------
+
+@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
+@echo off
+@REM set title of command window
+title %0
+@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
+@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO%
+
+@REM set %HOME% to equivalent of $HOME
+if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
+
+@REM Execute a user defined script before this one
+if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
+@REM check for pre script, once with legacy .bat ending and once with .cmd ending
+if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %*
+if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %*
+:skipRcPre
+
+@setlocal
+
+set ERROR_CODE=0
+
+@REM To isolate internal variables from possible post scripts, we use another setlocal
+@setlocal
+
+@REM ==== START VALIDATION ====
+if not "%JAVA_HOME%" == "" goto OkJHome
+
+echo.
+echo Error: JAVA_HOME not found in your environment. >&2
+echo Please set the JAVA_HOME variable in your environment to match the >&2
+echo location of your Java installation. >&2
+echo.
+goto error
+
+:OkJHome
+if exist "%JAVA_HOME%\bin\java.exe" goto init
+
+echo.
+echo Error: JAVA_HOME is set to an invalid directory. >&2
+echo JAVA_HOME = "%JAVA_HOME%" >&2
+echo Please set the JAVA_HOME variable in your environment to match the >&2
+echo location of your Java installation. >&2
+echo.
+goto error
+
+@REM ==== END VALIDATION ====
+
+:init
+
+@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
+@REM Fallback to current working directory if not found.
+
+set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
+IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
+
+set EXEC_DIR=%CD%
+set WDIR=%EXEC_DIR%
+:findBaseDir
+IF EXIST "%WDIR%"\.mvn goto baseDirFound
+cd ..
+IF "%WDIR%"=="%CD%" goto baseDirNotFound
+set WDIR=%CD%
+goto findBaseDir
+
+:baseDirFound
+set MAVEN_PROJECTBASEDIR=%WDIR%
+cd "%EXEC_DIR%"
+goto endDetectBaseDir
+
+:baseDirNotFound
+set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
+cd "%EXEC_DIR%"
+
+:endDetectBaseDir
+
+IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
+
+@setlocal EnableExtensions EnableDelayedExpansion
+for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
+@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
+
+:endReadAdditionalConfig
+
+SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
+set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
+set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
+
+set WRAPPER_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar"
+
+FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
+ IF "%%A"=="wrapperUrl" SET WRAPPER_URL=%%B
+)
+
+@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
+@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
+if exist %WRAPPER_JAR% (
+ if "%MVNW_VERBOSE%" == "true" (
+ echo Found %WRAPPER_JAR%
+ )
+) else (
+ if not "%MVNW_REPOURL%" == "" (
+ SET WRAPPER_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar"
+ )
+ if "%MVNW_VERBOSE%" == "true" (
+ echo Couldn't find %WRAPPER_JAR%, downloading it ...
+ echo Downloading from: %WRAPPER_URL%
+ )
+
+ powershell -Command "&{"^
+ "$webclient = new-object System.Net.WebClient;"^
+ "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
+ "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
+ "}"^
+ "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%WRAPPER_URL%', '%WRAPPER_JAR%')"^
+ "}"
+ if "%MVNW_VERBOSE%" == "true" (
+ echo Finished downloading %WRAPPER_JAR%
+ )
+)
+@REM End of extension
+
+@REM If specified, validate the SHA-256 sum of the Maven wrapper jar file
+SET WRAPPER_SHA_256_SUM=""
+FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
+ IF "%%A"=="wrapperSha256Sum" SET WRAPPER_SHA_256_SUM=%%B
+)
+IF NOT %WRAPPER_SHA_256_SUM%=="" (
+ powershell -Command "&{"^
+ "$hash = (Get-FileHash \"%WRAPPER_JAR%\" -Algorithm SHA256).Hash.ToLower();"^
+ "If('%WRAPPER_SHA_256_SUM%' -ne $hash){"^
+ " Write-Output 'Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised.';"^
+ " Write-Output 'Investigate or delete %WRAPPER_JAR% to attempt a clean download.';"^
+ " Write-Output 'If you updated your Maven version, you need to update the specified wrapperSha256Sum property.';"^
+ " exit 1;"^
+ "}"^
+ "}"
+ if ERRORLEVEL 1 goto error
+)
+
+@REM Provide a "standardized" way to retrieve the CLI args that will
+@REM work with both Windows and non-Windows executions.
+set MAVEN_CMD_LINE_ARGS=%*
+
+%MAVEN_JAVA_EXE% ^
+ %JVM_CONFIG_MAVEN_PROPS% ^
+ %MAVEN_OPTS% ^
+ %MAVEN_DEBUG_OPTS% ^
+ -classpath %WRAPPER_JAR% ^
+ "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^
+ %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
+if ERRORLEVEL 1 goto error
+goto end
+
+:error
+set ERROR_CODE=1
+
+:end
+@endlocal & set ERROR_CODE=%ERROR_CODE%
+
+if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost
+@REM check for post script, once with legacy .bat ending and once with .cmd ending
+if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat"
+if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd"
+:skipRcPost
+
+@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
+if "%MAVEN_BATCH_PAUSE%"=="on" pause
+
+if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE%
+
+cmd /C exit /B %ERROR_CODE%
diff --git a/pom.xml b/pom.xml
index 07199d00d1..3d1c80cf92 100644
--- a/pom.xml
+++ b/pom.xml
@@ -11,7 +11,7 @@
io.smallrye.reactive
smallrye-reactive-messaging
- 4.19.0-SNAPSHOT
+ 999-SNAPSHOT
pom
SmallRye Reactive Messaging
@@ -123,6 +123,8 @@
0.5.0
0.15.0
true
+
+ 1.11.0
@@ -584,6 +586,11 @@
+
+ org.jreleaser
+ jreleaser-maven-plugin
+ ${jreleaser-maven-plugin.version}
+
@@ -837,5 +844,48 @@
clean install
+
+ jreleaser
+
+
+
+ org.jreleaser
+ jreleaser-maven-plugin
+ ${jreleaser-maven-plugin.version}
+ false
+
+ SEMVER
+
+
+
+ smallrye
+ smallrye-reactive-messaging
+ true
+
+ conventional-commits
+ true
+ ALWAYS
+
+
+ GitHub
+ dependabot[bot]
+ bot
+ jreleaserbot
+ smallrye-ci
+
+
+
+
+ .*-M[0-9]+
+
+ Announcements
+
+
+
+
+
+
+
+
diff --git a/release/pom.xml b/release/pom.xml
index 8e83a379b6..081617cb70 100644
--- a/release/pom.xml
+++ b/release/pom.xml
@@ -5,7 +5,7 @@
io.smallrye.reactive
smallrye-reactive-messaging
- 4.19.0-SNAPSHOT
+ 999-SNAPSHOT
smallrye-reactive-messaging-release
diff --git a/smallrye-connector-attribute-processor/pom.xml b/smallrye-connector-attribute-processor/pom.xml
index b79131bd01..05a4ff932c 100644
--- a/smallrye-connector-attribute-processor/pom.xml
+++ b/smallrye-connector-attribute-processor/pom.xml
@@ -7,7 +7,7 @@
io.smallrye.reactive
smallrye-reactive-messaging
- 4.19.0-SNAPSHOT
+ 999-SNAPSHOT
smallrye-connector-attribute-processor
diff --git a/smallrye-reactive-messaging-amqp/pom.xml b/smallrye-reactive-messaging-amqp/pom.xml
index 4345c736a1..77e30f1992 100644
--- a/smallrye-reactive-messaging-amqp/pom.xml
+++ b/smallrye-reactive-messaging-amqp/pom.xml
@@ -6,7 +6,7 @@
io.smallrye.reactive
smallrye-reactive-messaging
- 4.19.0-SNAPSHOT
+ 999-SNAPSHOT
smallrye-reactive-messaging-amqp
diff --git a/smallrye-reactive-messaging-camel/pom.xml b/smallrye-reactive-messaging-camel/pom.xml
index 376858250b..56a81e921d 100644
--- a/smallrye-reactive-messaging-camel/pom.xml
+++ b/smallrye-reactive-messaging-camel/pom.xml
@@ -5,7 +5,7 @@
io.smallrye.reactive
smallrye-reactive-messaging
- 4.19.0-SNAPSHOT
+ 999-SNAPSHOT
smallrye-reactive-messaging-camel
diff --git a/smallrye-reactive-messaging-connector-archetype/pom.xml b/smallrye-reactive-messaging-connector-archetype/pom.xml
index acdee4f20e..949d3defef 100644
--- a/smallrye-reactive-messaging-connector-archetype/pom.xml
+++ b/smallrye-reactive-messaging-connector-archetype/pom.xml
@@ -6,7 +6,7 @@
io.smallrye.reactive
smallrye-reactive-messaging
- 4.19.0-SNAPSHOT
+ 999-SNAPSHOT
smallrye-reactive-messaging-connector-archetype
diff --git a/smallrye-reactive-messaging-gcp-pubsub/pom.xml b/smallrye-reactive-messaging-gcp-pubsub/pom.xml
index b4f73a8d29..47e568543e 100644
--- a/smallrye-reactive-messaging-gcp-pubsub/pom.xml
+++ b/smallrye-reactive-messaging-gcp-pubsub/pom.xml
@@ -4,7 +4,7 @@
smallrye-reactive-messaging
io.smallrye.reactive
- 4.19.0-SNAPSHOT
+ 999-SNAPSHOT
diff --git a/smallrye-reactive-messaging-health/pom.xml b/smallrye-reactive-messaging-health/pom.xml
index c3559adb18..14a18c9324 100644
--- a/smallrye-reactive-messaging-health/pom.xml
+++ b/smallrye-reactive-messaging-health/pom.xml
@@ -7,7 +7,7 @@
io.smallrye.reactive
smallrye-reactive-messaging
- 4.19.0-SNAPSHOT
+ 999-SNAPSHOT
diff --git a/smallrye-reactive-messaging-in-memory/pom.xml b/smallrye-reactive-messaging-in-memory/pom.xml
index df9eceb9e7..e0477eb2af 100644
--- a/smallrye-reactive-messaging-in-memory/pom.xml
+++ b/smallrye-reactive-messaging-in-memory/pom.xml
@@ -5,7 +5,7 @@
io.smallrye.reactive
smallrye-reactive-messaging
- 4.19.0-SNAPSHOT
+ 999-SNAPSHOT
smallrye-reactive-messaging-in-memory
diff --git a/smallrye-reactive-messaging-jackson/pom.xml b/smallrye-reactive-messaging-jackson/pom.xml
index 072ef8a09d..46159d88bb 100644
--- a/smallrye-reactive-messaging-jackson/pom.xml
+++ b/smallrye-reactive-messaging-jackson/pom.xml
@@ -5,7 +5,7 @@
smallrye-reactive-messaging
io.smallrye.reactive
- 4.19.0-SNAPSHOT
+ 999-SNAPSHOT
4.0.0
diff --git a/smallrye-reactive-messaging-jms/pom.xml b/smallrye-reactive-messaging-jms/pom.xml
index 421dbd1f41..7893cc1d11 100644
--- a/smallrye-reactive-messaging-jms/pom.xml
+++ b/smallrye-reactive-messaging-jms/pom.xml
@@ -5,7 +5,7 @@
io.smallrye.reactive
smallrye-reactive-messaging
- 4.19.0-SNAPSHOT
+ 999-SNAPSHOT
smallrye-reactive-messaging-jms
diff --git a/smallrye-reactive-messaging-jsonb/pom.xml b/smallrye-reactive-messaging-jsonb/pom.xml
index 220a819e6b..0ac8182ad0 100644
--- a/smallrye-reactive-messaging-jsonb/pom.xml
+++ b/smallrye-reactive-messaging-jsonb/pom.xml
@@ -5,7 +5,7 @@
smallrye-reactive-messaging
io.smallrye.reactive
- 4.19.0-SNAPSHOT
+ 999-SNAPSHOT
4.0.0
diff --git a/smallrye-reactive-messaging-kafka-api/pom.xml b/smallrye-reactive-messaging-kafka-api/pom.xml
index c78ae84d9d..75b8a6deb6 100644
--- a/smallrye-reactive-messaging-kafka-api/pom.xml
+++ b/smallrye-reactive-messaging-kafka-api/pom.xml
@@ -6,7 +6,7 @@
io.smallrye.reactive
smallrye-reactive-messaging
- 4.19.0-SNAPSHOT
+ 999-SNAPSHOT
smallrye-reactive-messaging-kafka-api
diff --git a/smallrye-reactive-messaging-kafka-test-companion/pom.xml b/smallrye-reactive-messaging-kafka-test-companion/pom.xml
index cbeb156c1e..5cfb71f839 100644
--- a/smallrye-reactive-messaging-kafka-test-companion/pom.xml
+++ b/smallrye-reactive-messaging-kafka-test-companion/pom.xml
@@ -6,7 +6,7 @@
io.smallrye.reactive
smallrye-reactive-messaging
- 4.19.0-SNAPSHOT
+ 999-SNAPSHOT
smallrye-reactive-messaging-kafka-test-companion
diff --git a/smallrye-reactive-messaging-kafka/pom.xml b/smallrye-reactive-messaging-kafka/pom.xml
index 4ce949f2c7..7350e7cabc 100644
--- a/smallrye-reactive-messaging-kafka/pom.xml
+++ b/smallrye-reactive-messaging-kafka/pom.xml
@@ -6,7 +6,7 @@
io.smallrye.reactive
smallrye-reactive-messaging
- 4.19.0-SNAPSHOT
+ 999-SNAPSHOT
smallrye-reactive-messaging-kafka
diff --git a/smallrye-reactive-messaging-mqtt/pom.xml b/smallrye-reactive-messaging-mqtt/pom.xml
index e2fa17ecda..431b142c96 100644
--- a/smallrye-reactive-messaging-mqtt/pom.xml
+++ b/smallrye-reactive-messaging-mqtt/pom.xml
@@ -6,7 +6,7 @@
io.smallrye.reactive
smallrye-reactive-messaging
- 4.19.0-SNAPSHOT
+ 999-SNAPSHOT
smallrye-reactive-messaging-mqtt
diff --git a/smallrye-reactive-messaging-otel/pom.xml b/smallrye-reactive-messaging-otel/pom.xml
index ce5508a87f..6cb9b8af19 100644
--- a/smallrye-reactive-messaging-otel/pom.xml
+++ b/smallrye-reactive-messaging-otel/pom.xml
@@ -5,7 +5,7 @@
smallrye-reactive-messaging
io.smallrye.reactive
- 4.19.0-SNAPSHOT
+ 999-SNAPSHOT
4.0.0
diff --git a/smallrye-reactive-messaging-provider/pom.xml b/smallrye-reactive-messaging-provider/pom.xml
index 35f4a3468c..59ac8284f2 100644
--- a/smallrye-reactive-messaging-provider/pom.xml
+++ b/smallrye-reactive-messaging-provider/pom.xml
@@ -6,7 +6,7 @@
io.smallrye.reactive
smallrye-reactive-messaging
- 4.19.0-SNAPSHOT
+ 999-SNAPSHOT
smallrye-reactive-messaging-provider
diff --git a/smallrye-reactive-messaging-pulsar/pom.xml b/smallrye-reactive-messaging-pulsar/pom.xml
index 65ecf40518..315a9e239c 100644
--- a/smallrye-reactive-messaging-pulsar/pom.xml
+++ b/smallrye-reactive-messaging-pulsar/pom.xml
@@ -6,7 +6,7 @@
io.smallrye.reactive
smallrye-reactive-messaging
- 4.19.0-SNAPSHOT
+ 999-SNAPSHOT
smallrye-reactive-messaging-pulsar
diff --git a/smallrye-reactive-messaging-rabbitmq/pom.xml b/smallrye-reactive-messaging-rabbitmq/pom.xml
index 678c3b46cf..0165ded244 100644
--- a/smallrye-reactive-messaging-rabbitmq/pom.xml
+++ b/smallrye-reactive-messaging-rabbitmq/pom.xml
@@ -6,7 +6,7 @@
io.smallrye.reactive
smallrye-reactive-messaging
- 4.19.0-SNAPSHOT
+ 999-SNAPSHOT
smallrye-reactive-messaging-rabbitmq
diff --git a/tck/pom.xml b/tck/pom.xml
index 94624adc88..6c2f79f5ff 100644
--- a/tck/pom.xml
+++ b/tck/pom.xml
@@ -5,7 +5,7 @@
io.smallrye.reactive
smallrye-reactive-messaging
- 4.19.0-SNAPSHOT
+ 999-SNAPSHOT
tck
diff --git a/test-common/pom.xml b/test-common/pom.xml
index 0f0af5933c..c9a8b86ede 100644
--- a/test-common/pom.xml
+++ b/test-common/pom.xml
@@ -6,7 +6,7 @@
io.smallrye.reactive
smallrye-reactive-messaging
- 4.19.0-SNAPSHOT
+ 999-SNAPSHOT
test-common