Skip to content

feat: make use of ToolRunner - #13

Merged
gastaldi merged 8 commits into
jbangdev:mainfrom
cstamas:toolrunner
May 23, 2026
Merged

gastaldi merged 8 commits into
jbangdev:mainfrom
cstamas:toolrunner

Conversation

@cstamas

@cstamas cstamas commented May 7, 2026 •

Copy link
Copy Markdown
Contributor

Make the plugin jbang-maven-plugin use new https://github.com/maveniverse/toolrunner to detect, provision (if not detected, or user did set specific version that was not detected) and execute JBang.

Changes:

  • project kept Java 8
  • use ToolRunner-jbang provider
  • POM parent updated
  • update mvnw
  • update GH Actions

Summary by CodeRabbit

  • Chores
    • Updated Maven Wrapper to version 3.3.4 with improved download and verification mechanisms.
    • Upgraded Maven distribution to version 3.9.16 for enhanced stability and security.
    • Bumped JBoss parent POM to version 53 and updated core build plugins for better compatibility and performance.
    • Improved test verification infrastructure with simplified log-reading logic.
    • Enhanced build reliability with better error handling and checksum validation.

Review Change Stack

@cstamas cstamas changed the title Make use of ToolRunner feat: make use of ToolRunner May 7, 2026
@cstamas
cstamas force-pushed the toolrunner branch 3 times, most recently from 7f61ca7 to ef57ac1 Compare May 7, 2026 23:34
@cstamas
cstamas marked this pull request as ready for review May 7, 2026 23:50
@gastaldi
gastaldi requested a review from maxandersen May 8, 2026 10:13

@gastaldi gastaldi left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

gastaldi

This comment was marked as outdated.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR migrates jbang-maven-plugin to use Maveniverse ToolRunner for detecting/provisioning and executing JBang, while updating build tooling (parent POM, Maven Wrapper, and CI) to match the new baseline.

Changes:

  • Replace custom JBang detection/download/exec logic with ToolRunner-based execution in RunMojo.
  • Update integration test log verification scripts to use simpler Groovy File APIs.
  • Update build/tooling configuration (parent POM, Maven Wrapper scripts/properties, GitHub Actions workflow).

Reviewed changes

Copilot reviewed 11 out of 11 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
src/main/java/dev/jbang/RunMojo.java Switches execution to ToolRunner and updates trust/run invocation logic.
src/it/skip/verify.groovy Simplifies build log reading for the “skip” IT.
src/it/script/verify.groovy Simplifies build log reading for the basic script IT.
src/it/script-with-trust/verify.groovy Simplifies build log reading for the trust IT.
src/it/script-with-jbang-args/verify.groovy Simplifies build log reading for jbangargs IT.
src/it/script-with-args/verify.groovy Simplifies build log reading for args IT.
pom.xml Updates parent and dependencies to ToolRunner ecosystem; updates plugin/tooling versions.
mvnw.cmd Updates Maven Wrapper script.
mvnw Updates Maven Wrapper script.
.mvn/wrapper/maven-wrapper.properties Updates wrapper configuration to Wrapper 3.3.4 and Maven 3.9.15.
.github/workflows/ci.yml Updates CI Java matrix and GitHub Actions used for checkout/JDK setup/build flags.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/main/java/dev/jbang/RunMojo.java
Comment thread src/main/java/dev/jbang/RunMojo.java Outdated
Comment thread pom.xml Outdated
@cstamas
cstamas requested a review from gastaldi May 8, 2026 13:22
@coderabbitai

coderabbitai Bot commented May 18, 2026 •

Copy link
Copy Markdown

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 13b00a7a-5b7b-4625-b438-24bdbf8fa13a

📥 Commits

Reviewing files that changed from the base of the PR and between dbea8b0 and c18ab42.

📒 Files selected for processing (2)
  • pom.xml
  • src/main/java/dev/jbang/RunMojo.java

📝 Walkthrough

Walkthrough

This PR modernizes the Maven build infrastructure by updating Maven Wrapper from 3.2.0 to 3.3.4 with improved distribution caching and SHA-256 hashing, upgrading pom.xml build dependencies and plugins (including new toolrunner support), simplifying integration test verifiers from NIO to Groovy File API, and refactoring RunMojo to use the toolrunner API for JBang invocation instead of process-based execution.

Changes

Build Infrastructure Modernization

Layer / File(s) Summary
Wrapper version and properties update
.mvn/wrapper/maven-wrapper.properties, mvnw, mvnw.cmd
Maven Wrapper metadata bumped to 3.3.4, distributionUrl updated to Maven 3.9.16, distributionType set to only-script, and version comments synchronized across shell and batch scripts.
Distribution paths and cache logic
mvnw, mvnw.cmd
Introduces MAVEN_USER_HOME (defaulting to $HOME/.m2), refactors cache path computation under .m2, enforces distribution URL validation patterns, and replaces MD5 hashing with SHA-256 for wrapper distribution cache keys.
Download, verification, and extraction
mvnw, mvnw.cmd
Enhances download selection (wget → curl → Java downloader) with verbose output and hard failures, updates SHA-256 checksum verification with conditional command detection, and reworks extraction to detect and relocate the Maven executable directory.
Wrapper helper functions
mvnw
Refines Java home detection for Cygwin/MinGW with path normalization and executable checks, updates hash_string calculation for cache keys, and adds trim utility for property parsing.
Build configuration and dependencies
pom.xml
Upgrades jboss-parent to 53, switches to maven.compiler.release=8, adds toolrunner and SLF4J dependencies to support RunMojo refactoring, and updates plugin versions (maven-plugin-plugin 3.15.2, nexus-staging-maven-plugin 1.7.0).
Integration test infrastructure
pom.xml
Updates maven-invoker-plugin to 3.10.1 and mrm-maven-plugin to 1.7.1 in it profile, and configures MAVEN_ARGS environment variable for integration tests.
Test verification simplification
src/it/*/verify.groovy
Migrates all integration test verifiers from java.nio API (Paths, Files.readAllBytes) to Groovy File API (new File, .text property) for consistent log reading and assertions.

RunMojo ToolRunner Refactoring

Layer / File(s) Summary
Imports and constants refactoring
src/main/java/dev/jbang/RunMojo.java
Replaces process execution and JBang download imports with toolrunner types (ToolManager, ToolHandle, ToolExecution, JBangProvider), removes OS-detection constants, and updates javadoc references.
ToolRunner-based execution
src/main/java/dev/jbang/RunMojo.java
Rewrites execute() to configure ToolManager, select jbang tool with optional version pinning, invoke executeTrust, and run jbang via ToolExecution with validated exit codes; refactors executeTrust(ToolHandle) to execute trust commands through the tool handle.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Poem

A rabbit hops through Maven's modern maze,
with Wrapper scripts now trim and bright,
and ToolRunner dances in the blaze—
the build pipeline shines with newer light. 🐇✨

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 50.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'feat: make use of ToolRunner' directly and clearly describes the main change: integrating and using the ToolRunner library throughout the codebase, as evidenced by the refactored RunMojo, updated Maven Wrapper, and pom.xml dependency changes.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Warning

Review ran into problems

🔥 Problems

Git: Failed to clone repository. Please run the @coderabbitai full review command to re-trigger a full review. If the issue persists, set path_filters to include or exclude specific files.


Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/main/java/dev/jbang/RunMojo.java`:
- Around line 84-85: RunMojo currently unconditionally dereferences
project.getBuild() and project.getBasedir(), causing NPE when run with
requiresProject=false; update the code in RunMojo (the places calling
project.getBuild() and project.getBasedir()) to first check if project is null
or those getters return null and use safe fallbacks (e.g. a new/default Build
object or the current working directory as the basedir) so the no-project
invocation path remains functional; ensure all usages of project.getBuild() and
project.getBasedir() are guarded and consistently use the fallback values.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 57b1be49-1122-4527-ab4c-cce6676b17ec

📥 Commits

Reviewing files that changed from the base of the PR and between 5dda1c8 and a0b7b65.

📒 Files selected for processing (11)
  • .github/workflows/ci.yml
  • .mvn/wrapper/maven-wrapper.properties
  • mvnw
  • mvnw.cmd
  • pom.xml
  • src/it/script-with-args/verify.groovy
  • src/it/script-with-jbang-args/verify.groovy
  • src/it/script-with-trust/verify.groovy
  • src/it/script/verify.groovy
  • src/it/skip/verify.groovy
  • src/main/java/dev/jbang/RunMojo.java

Comment thread src/main/java/dev/jbang/RunMojo.java Outdated
Comment on lines 84 to 85
@Parameter(defaultValue = "${project}", readonly = true, required = true)
protected MavenProject project;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf '\n== Documented no-project usage ==\n'
rg -n -C2 'without pom file' README.md README.adoc || true

printf '\n== Mojo contract and new project dereferences ==\n'
rg -n -C2 'requiresProject\s*=\s*false|project\.getBuild\(|project\.getBasedir\(' src/main/java/dev/jbang/RunMojo.java

Repository: jbangdev/jbang-maven-plugin

Length of output: 2346


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Get full context of the RunMojo class around the problematic lines
echo "=== Full context around lines 80-130 in RunMojo.java ==="
sed -n '80,130p' src/main/java/dev/jbang/RunMojo.java | cat -n

echo ""
echo "=== Check for any null checks on 'project' variable ==="
rg -n 'project\s*!=\s*null|project\s*==\s*null' src/main/java/dev/jbang/RunMojo.java || echo "(No null checks found)"

echo ""
echo "=== Check if project field is initialized or optional ==="
sed -n '60,90p' src/main/java/dev/jbang/RunMojo.java | cat -n

Repository: jbangdev/jbang-maven-plugin

Length of output: 4251


Preserve the no-project invocation path.

The README documents that the plugin runs through mvn command-line without a pom file. The @Mojo(requiresProject = false) annotation allows this, but the new code unconditionally dereferences project.getBuild() on line 97 and project.getBasedir() on line 126. When invoked without a project, these calls fail with NullPointerException.

Add null checks with fallbacks to preserve the documented feature:

Suggested guard/fallback
+        File workingDir = project != null ? project.getBasedir() : new File(System.getProperty("user.dir"));
+        java.nio.file.Path tempDir = project != null
+                ? Paths.get(project.getBuild().getOutputDirectory()).resolve("toolrunner-tmp")
+                : Paths.get(System.getProperty("java.io.tmpdir")).resolve("jbang-toolrunner-tmp");
+        java.nio.file.Path installDir = jbangInstallDir != null ? jbangInstallDir.toPath() : workingDir.toPath();
+
         try (ToolManager toolManager = ToolManager.create(
                 Config.builder()
                         .isTransient(false)
                         .allowPathDetection(true)
-                        .tempDirectory(Paths.get(project.getBuild().getOutputDirectory()).resolve("toolrunner-tmp"))
-                        .installationDirectory(jbangInstallDir.toPath())
+                        .tempDirectory(tempDir)
+                        .installationDirectory(installDir)
                         .build())) {
...
             ToolExecution.Builder execution = jbang.executionTemplate()
-                    .cwd(project.getBasedir().toPath())
+                    .cwd(workingDir.toPath())
                     .arguments(arguments);

Also applies to: lines 97-98, 126

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/main/java/dev/jbang/RunMojo.java` around lines 84 - 85, RunMojo currently
unconditionally dereferences project.getBuild() and project.getBasedir(),
causing NPE when run with requiresProject=false; update the code in RunMojo (the
places calling project.getBuild() and project.getBasedir()) to first check if
project is null or those getters return null and use safe fallbacks (e.g. a
new/default Build object or the current working directory as the basedir) so the
no-project invocation path remains functional; ensure all usages of
project.getBuild() and project.getBasedir() are guarded and consistently use the
fallback values.

@cstamas

cstamas commented May 18, 2026

Copy link
Copy Markdown
Contributor Author

Coderabbit was right, without project plugin exploded. This is now fixed.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/main/java/dev/jbang/RunMojo.java`:
- Around line 17-22: The new imports/usages (ToolManager, ToolHandler,
ToolExecution, JBangProvider) pulled in ToolRunner 0.2.3 which requires Java 17;
to restore Java 8 compatibility, change the ToolRunner dependency back to a
Java‑8 compatible version (e.g. 0.2.2) in your build configuration or replace
the 0.2.3 API usage with the previous API; specifically, update the project's
dependency/version for the toolrunner artifact (the one that provides
ToolManager/JBangProvider) to the prior release that supports Java 8, rebuild,
and ensure maven.compiler.release remains 8 (or alternatively, if you
intentionally move to Java 17, update maven.compiler.release to 17 and adjust CI
accordingly).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 658b0ad6-d085-4186-b001-dc12f3520174

📥 Commits

Reviewing files that changed from the base of the PR and between a0b7b65 and dbea8b0.

📒 Files selected for processing (1)
  • src/main/java/dev/jbang/RunMojo.java

Comment on lines +17 to +22
import eu.maveniverse.maven.toolrunner.shared.Config;
import eu.maveniverse.maven.toolrunner.shared.ToolExecution;
import eu.maveniverse.maven.toolrunner.shared.ToolHandle;
import eu.maveniverse.maven.toolrunner.shared.ToolHandler;
import eu.maveniverse.maven.toolrunner.shared.ToolManager;
import eu.maveniverse.maven.toolrunner.tools.jbang.JBangProvider;

@coderabbitai coderabbitai Bot May 18, 2026 •

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical | 🏗️ Heavy lift

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

for path in \
  'eu/maveniverse/maven/toolrunner/toolrunner/0.2.3/toolrunner-0.2.3.pom' \
  'eu/maveniverse/maven/toolrunner/shared/0.2.3/shared-0.2.3.pom' \
  'eu/maveniverse/maven/toolrunner/tools/jbang/0.2.3/jbang-0.2.3.pom'
do
  echo "=== $path ==="
  curl -fsSL "https://repo1.maven.org/maven2/$path" | grep -nE 'Run time:|maven.compiler.release|<parent>|<groupId>|<artifactId>|<version>'
done

Repository: jbangdev/jbang-maven-plugin

Length of output: 9953


🏁 Script executed:

# Find and examine the project's main pom.xml
find . -maxdepth 2 -name "pom.xml" -type f | head -5

Repository: jbangdev/jbang-maven-plugin

Length of output: 81


🏁 Script executed:

# Look for ToolRunner dependency version in pom files
rg -t xml "toolrunner|java.version|maven.compiler" --max-count=20

Repository: jbangdev/jbang-maven-plugin

Length of output: 518


🏁 Script executed:

# Check README or other docs for Java version requirements
fd -e md -e txt | xargs grep -l "Java 8\|java 8\|target.*8" 2>/dev/null | head -5

Repository: jbangdev/jbang-maven-plugin

Length of output: 53


🏁 Script executed:

# View the RunMojo.java file to understand the context better
cat -n src/main/java/dev/jbang/RunMojo.java | head -120

Repository: jbangdev/jbang-maven-plugin

Length of output: 5411


ToolRunner 0.2.3 breaks the Java 8 compatibility goal.

This refactor now depends on ToolRunner 0.2.3, and the published 0.2.3 POM states a Java 17 runtime requirement. The project targets Java 8 compilation (maven.compiler.release=8), but runtime compatibility requires Java 17, making this incompatible with the stated Java 8 support target.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/main/java/dev/jbang/RunMojo.java` around lines 17 - 22, The new
imports/usages (ToolManager, ToolHandler, ToolExecution, JBangProvider) pulled
in ToolRunner 0.2.3 which requires Java 17; to restore Java 8 compatibility,
change the ToolRunner dependency back to a Java‑8 compatible version (e.g.
0.2.2) in your build configuration or replace the 0.2.3 API usage with the
previous API; specifically, update the project's dependency/version for the
toolrunner artifact (the one that provides ToolManager/JBangProvider) to the
prior release that supports Java 8, rebuild, and ensure maven.compiler.release
remains 8 (or alternatively, if you intentionally move to Java 17, update
maven.compiler.release to 17 and adjust CI accordingly).

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Huh?

Unsure from where comes this but toolrunner constituents are:
https://gist.github.com/cstamas/c8b0472f9eca4d7d55ac7d9775260999

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧩 Analysis chain

Let me verify the actual Java requirements by looking at the gist and the ToolRunner POMs directly.


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Fetch the gist to understand toolrunner constituents
curl -fsSL "https://gist.github.com/cstamas/c8b0472f9eca4d7d55ac7d9775260999" | grep -A5 -B2 "java\|Java\|compiler\|runtime\|version" | head -80

echo "==="
# Check the actual POM of toolrunner shared and tools/jbang
for path in \
  'eu/maveniverse/maven/toolrunner/toolrunner/0.2.3/toolrunner-0.2.3.pom' \
  'eu/maveniverse/maven/toolrunner/shared/0.2.3/shared-0.2.3.pom' \
  'eu/maveniverse/maven/toolrunner/tools/0.2.3/tools-0.2.3.pom' \
  'eu/maveniverse/maven/toolrunner/tools/jbang/0.2.3/jbang-0.2.3.pom'
do
  echo "=== $path ==="
  curl -fsSL "https://repo1.maven.org/maven2/$path" 2>/dev/null | grep -nE 'java|Java|compiler|runtime|Run time' | head -20
  echo ""
done

Length of output: 16886


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Use GitHub API to get gist content
gh api gists/c8b0472f9eca4d7d55ac7d9775260999 --jq '.files | to_entries[] | "=== \(.key) ===\n\(.value.content)"'

echo ""
echo "=== Maven Central POMs ==="

# Check the toolrunner parent POM (which sets Java version for all modules)
for path in \
  'eu/maveniverse/maven/toolrunner/toolrunner/0.2.3/toolrunner-0.2.3.pom' \
  'eu/maveniverse/maven/toolrunner/shared/0.2.3/shared-0.2.3.pom'
do
  echo "--- $path ---"
  curl -fsSL "https://repo1.maven.org/maven2/$path" | python3 -c "
import sys, xml.etree.ElementTree as ET
tree = ET.parse(sys.stdin)
root = tree.getroot()
ns = root.tag.split('}')[0].lstrip('{') if '}' in root.tag else ''
prefix = '{' + ns + '}' if ns else ''
# Print all properties
props = root.find(f'{prefix}properties')
if props:
    for p in props:
        print(p.tag.replace(prefix,''), '=', p.text)
# Print parent
parent = root.find(f'{prefix}parent')
if parent:
    print('parent groupId:', parent.find(f'{prefix}groupId').text if parent.find(f'{prefix}groupId') is not None else '')
    print('parent artifactId:', parent.find(f'{prefix}artifactId').text if parent.find(f'{prefix}artifactId') is not None else '')
    print('parent version:', parent.find(f'{prefix}version').text if parent.find(f'{prefix}version') is not None else '')
" 2>/dev/null
  echo ""
done

Length of output: 76


🏁 Script executed:

#!/bin/bash
set -euo pipefail

# Fetch gist via unauthenticated GitHub API (public gist)
curl -fsSL "https://api.github.com/gists/c8b0472f9eca4d7d55ac7d9775260999" \
  | python3 -c "
import sys, json
data = json.load(sys.stdin)
for fname, fdata in data['files'].items():
    print('=== ' + fname + ' ===')
    print(fdata.get('content', ''))
    print()
"

echo ""
echo "=== Maven Central toolrunner-0.2.3 POM ==="
curl -fsSL "https://repo1.maven.org/maven2/eu/maveniverse/maven/toolrunner/toolrunner/0.2.3/toolrunner-0.2.3.pom" \
  | grep -n "compiler\|java\|Java\|runtime\|Runtime\|release\|version" | head -40

echo ""
echo "=== Maven Central shared-0.2.3 POM ==="
curl -fsSL "https://repo1.maven.org/maven2/eu/maveniverse/maven/toolrunner/shared/0.2.3/shared-0.2.3.pom" \
  | grep -n "compiler\|java\|Java\|runtime\|Runtime\|release\|version" | head -40

Length of output: 771


@cstamas, apologies for the confusion — I was unable to access the gist content to verify the details. Looking back at my original analysis, I may have misread the Maven POM metadata. The "Java 17" I found was likely from a parent POM's build-time JVM requirement (i.e., what JDK is needed to run the Maven build), not the bytecode target of the toolrunner library itself — these are two distinct things. Since you are the author of ToolRunner and are pointing to the gist as evidence of the actual Java compatibility, I'll withdraw my concern.

Would you like me to resolve this comment?

🐇 (づ。◕‿‿◕。)づ


✏️ Learnings added
Learnt from: cstamas
Repo: jbangdev/jbang-maven-plugin PR: 13
File: src/main/java/dev/jbang/RunMojo.java:17-22
Timestamp: 2026-05-18T16:24:57.467Z
Learning: In the jbangdev/jbang-maven-plugin project (Java, Maven), the ToolRunner (eu.maveniverse.maven.toolrunner) library used by RunMojo is Java 8 compatible despite what its parent POM build-time JVM requirements may indicate. The author (cstamas, also the author of ToolRunner) confirmed this. Do not flag ToolRunner 0.2.3 as incompatible with Java 8 bytecode targets.

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.

@cstamas

cstamas commented May 23, 2026

Copy link
Copy Markdown
Contributor Author

Is anything else needed here?

@gastaldi gastaldi left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@gastaldi
gastaldi merged commit 932742f into jbangdev:main May 23, 2026
7 checks passed
@cstamas
cstamas deleted the toolrunner branch May 23, 2026 13:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants