Skip to content

Commit a518332

Browse files
aksOpsclaude
andcommitted
feat(plugin): externalize Maven proxy + JRE source + version pin to config.env
The launcher's previously hardcoded URLs and version are now read from plugin/skills/sonar-predictor/config.env. Edit that one file (or set a same-named env var, which takes precedence) to point at a corporate Nexus / Artifactory and a private JRE mirror — no code changes. Configurable values (defaults shown): SONAR_MAVEN_REPO_URL=https://repo1.maven.org/maven2 SONAR_BUNDLE_VERSION=0.1.1 SONAR_MIN_JAVA_VERSION=17 SONAR_JRE_URL_TEMPLATE=https://api.adoptium.net/v3/binary/latest/{version}/ga/{os}/{arch}/jre/hotspot/normal/eclipse SONAR_JRE_VERSION=17 SONAR_DISABLE_JRE_AUTODOWNLOAD= Both launchers parse the same KEY=VALUE file format. The bash launcher also gains a 'no Java anywhere -> download a JRE' step that runs after the bundle is cached and before exec'ing the real launcher. Java is searched in $JAVA_HOME, on PATH, and in the same common install dirs the bundle's own launcher already probes. Only when all of those come up empty does the bootstrap fetch a JRE from the configured URL template (tokens {os}, {arch}, {version} substituted), extract it to ${XDG_CACHE_HOME:-~/.cache}/sonar-predictor/jre/<VERSION>/, and export JAVA_HOME for the bundle launcher to pick up. Set SONAR_DISABLE_JRE_AUTODOWNLOAD=1 to refuse this and fail cleanly instead. Windows JRE auto-install is deferred -- the Windows launcher reads the same config.env but still requires Java 17+ on the system (or in JAVA_HOME). The bundle's launcher will discover it. Tested end to end: - default config: bundle from Maven Central, system Java used. - env-var override: SONAR_MAVEN_REPO_URL=bad-url correctly steers the download and fails as expected. - JRE auto-install: forced via SONAR_MIN_JAVA_VERSION=99; Adoptium Temurin 17.0.19 downloads and runs. - disable toggle: SONAR_DISABLE_JRE_AUTODOWNLOAD=1 blocks the install with the right error. Forking workflow: clone, edit config.env, push to your fork, install via `/plugin marketplace add <your-fork>`. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
1 parent 9173ae1 commit a518332

4 files changed

Lines changed: 252 additions & 45 deletions

File tree

plugin/skills/sonar-predictor/SKILL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,6 @@ Exit codes: `0` clean, `1` issues found, `2` tool error.
1515

1616
Acting on findings: fix `BUG`/`VULNERABILITY`/`SECURITY_HOTSPOT` and `CRITICAL`/`MAJOR` first. This is a fast first-pass gate, not the release gate — fix the real issues and move on.
1717

18-
**Air-gapped / pre-staged installs.** Set `SONAR_PREDICTOR_HOME=/path/to/extracted/sonar-predictor` to point the launcher at a pre-downloaded bundle and skip the first-run download.
18+
**Configuration / corporate environments.** The launcher reads `config.env` next to this `SKILL.md` — Maven proxy URL, JRE download URL, bundle and Java version pins. Edit it (or override with same-named env vars) to point at a corporate Nexus / Artifactory mirror and a private JRE source. The defaults use Maven Central and Adoptium Temurin's public API. `SONAR_PREDICTOR_HOME=/path/to/extracted/sonar-predictor` skips the bundle download entirely for fully air-gapped / pre-staged installs.
1919

2020
**Plugin-bundled agent variants.** Two named scanner subagents ship with this plugin: invoke `sonar-scanner-claude` on Claude Code (model: haiku) or `sonar-scanner-copilot` on GitHub Copilot CLI (model: gpt-5-mini). Selection is by agent name — pick the one matching your platform.
Lines changed: 179 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,74 @@
11
#!/usr/bin/env bash
22
# Bootstrap wrapper for the sonar-predictor skill bundle.
33
#
4-
# On first invocation, downloads the analyzer bundle (~150 MB) from Maven
5-
# Central into the user cache, verifies its SHA-1, and unpacks it. Every
6-
# subsequent call exec's the cached launcher directly — no network.
4+
# On first invocation:
5+
# 1. loads ../config.env (corporate Maven proxy, JRE mirror, version pin),
6+
# 2. downloads sonar-predictor-dist-<VERSION>.zip from SONAR_MAVEN_REPO_URL,
7+
# verifies its SHA-1 sidecar, and unpacks it into the user cache,
8+
# 3. ensures a Java >= SONAR_MIN_JAVA_VERSION is available — downloading
9+
# one from SONAR_JRE_URL_TEMPLATE into the user cache if not found
10+
# (the bundle's own launcher already searches JAVA_HOME / PATH / common
11+
# install dirs; this only kicks in when that comes up empty),
12+
# 4. exec's the cached launcher.
13+
# Every subsequent call exec's the cached launcher directly with no network.
714
#
8-
# Override the bundle location for air-gapped or pre-staged installs:
15+
# Override the bundle location for air-gapped / pre-staged installs:
916
# SONAR_PREDICTOR_HOME=/path/to/extracted/sonar-predictor
17+
#
18+
# All other knobs (Maven proxy, JRE source, version pin, min Java) live in
19+
# ../config.env; each one is also an env-var override.
1020

1121
set -euo pipefail
1222

13-
# Pinned to the bundle version published to Maven Central. Bumped in lockstep
14-
# with the plugin's release: each tagged plugin release publishes a matching
15-
# sonar-predictor-dist-<VERSION>.zip and updates this pin.
16-
#
17-
# Note: v0.1.2's dist artifact on Central is the (now-removed) plugin-bundle
18-
# shape, not the skill-bundle this wrapper expects. v0.1.1 is the last good
19-
# skill bundle; v0.1.3 onwards will be skill-shaped again.
20-
VERSION="0.1.1"
23+
# -------- 1. load config -----------------------------------------------------
24+
25+
HERE="$(cd "$(dirname "$0")" && pwd)"
26+
CONFIG="$HERE/../config.env"
27+
28+
if [ -f "$CONFIG" ]; then
29+
# Parse KEY=VALUE lines; env vars already in scope take precedence.
30+
while IFS='=' read -r key value; do
31+
case "$key" in
32+
''|'#'*) continue ;;
33+
esac
34+
key="${key%%[[:space:]]*}"
35+
if [ -z "${!key:-}" ]; then
36+
printf -v "$key" '%s' "$value"
37+
export "$key"
38+
fi
39+
done < "$CONFIG"
40+
fi
2141

42+
# Defaults if config.env is missing or empty.
43+
: "${SONAR_MAVEN_REPO_URL:=https://repo1.maven.org/maven2}"
44+
: "${SONAR_BUNDLE_VERSION:=0.1.1}"
45+
: "${SONAR_MIN_JAVA_VERSION:=17}"
46+
: "${SONAR_JRE_URL_TEMPLATE:=https://api.adoptium.net/v3/binary/latest/{version}/ga/{os}/{arch}/jre/hotspot/normal/eclipse}"
47+
: "${SONAR_JRE_VERSION:=17}"
48+
: "${SONAR_DISABLE_JRE_AUTODOWNLOAD:=}"
49+
50+
VERSION="$SONAR_BUNDLE_VERSION"
2251
GROUP_PATH="io/github/randomcodespace/sonarpredict"
2352
ARTIFACT="sonar-predictor-dist"
24-
BASE_URL="https://repo1.maven.org/maven2/${GROUP_PATH}/${ARTIFACT}/${VERSION}"
53+
BUNDLE_URL_BASE="${SONAR_MAVEN_REPO_URL%/}/${GROUP_PATH}/${ARTIFACT}/${VERSION}"
2554

55+
CACHE_ROOT="${XDG_CACHE_HOME:-$HOME/.cache}/sonar-predictor"
2656
if [ -n "${SONAR_PREDICTOR_HOME:-}" ]; then
2757
SKILL_DIR="$SONAR_PREDICTOR_HOME"
2858
else
29-
CACHE_ROOT="${XDG_CACHE_HOME:-$HOME/.cache}/sonar-predictor"
3059
SKILL_DIR="$CACHE_ROOT/$VERSION"
3160
fi
32-
3361
REAL_SONAR="$SKILL_DIR/bin/sonar"
3462

63+
# -------- helpers ------------------------------------------------------------
64+
65+
require_cmd() {
66+
if ! command -v "$1" >/dev/null 2>&1; then
67+
echo "sonar-predictor: required command '$1' not found on PATH" >&2
68+
exit 2
69+
fi
70+
}
71+
3572
sha1_of() {
3673
if command -v sha1sum >/dev/null 2>&1; then
3774
sha1sum "$1" | awk '{print $1}'
@@ -43,46 +80,156 @@ sha1_of() {
4380
fi
4481
}
4582

46-
if [ ! -x "$REAL_SONAR" ]; then
47-
for cmd in curl unzip; do
48-
if ! command -v "$cmd" >/dev/null 2>&1; then
49-
echo "sonar-predictor: required command '$cmd' not found on PATH" >&2
50-
exit 2
83+
java_major_of() {
84+
local v raw maj
85+
v="$("$1" -version 2>&1 | head -1)" || return 1
86+
raw="$(printf '%s' "$v" | sed -E 's/^[^"]*"([^"]+)".*/\1/')"
87+
[ -n "$raw" ] || return 1
88+
maj="$(printf '%s' "$raw" | cut -d. -f1)"
89+
if [ "$maj" = "1" ]; then
90+
maj="$(printf '%s' "$raw" | cut -d. -f2)"
91+
fi
92+
printf '%s' "$maj"
93+
}
94+
95+
found_java_meets_min() {
96+
# The bundle's own launcher searches JAVA_HOME, PATH and common dirs. We
97+
# only need to know whether *some* working Java >= the minimum exists; if
98+
# so, we hand off to it. Otherwise we install one and set JAVA_HOME so the
99+
# bundle's launcher picks it up.
100+
local cand major
101+
for cand in \
102+
"${JAVA_HOME:-}/bin/java" \
103+
"$(command -v java 2>/dev/null || true)" \
104+
/usr/lib/jvm/*/bin/java \
105+
/usr/java/*/bin/java \
106+
/Library/Java/JavaVirtualMachines/*/Contents/Home/bin/java \
107+
"${HOME:-/nonexistent}"/.sdkman/candidates/java/*/bin/java \
108+
/opt/java/*/bin/java \
109+
/opt/*/bin/java
110+
do
111+
[ -x "$cand" ] || continue
112+
major="$(java_major_of "$cand" 2>/dev/null || true)"
113+
[ -n "$major" ] || continue
114+
if [ "$major" -ge "$SONAR_MIN_JAVA_VERSION" ] 2>/dev/null; then
115+
return 0
51116
fi
52117
done
118+
return 1
119+
}
120+
121+
detect_os_arch() {
122+
case "$(uname -s)" in
123+
Linux*) OS=linux ;;
124+
Darwin*) OS=mac ;;
125+
*) echo "sonar-predictor: unsupported OS '$(uname -s)' for JRE auto-download" >&2; exit 2 ;;
126+
esac
127+
case "$(uname -m)" in
128+
x86_64|amd64) ARCH=x64 ;;
129+
aarch64|arm64) ARCH=aarch64 ;;
130+
*) echo "sonar-predictor: unsupported arch '$(uname -m)' for JRE auto-download" >&2; exit 2 ;;
131+
esac
132+
}
133+
134+
install_jre() {
135+
local jre_dir="$CACHE_ROOT/jre/$SONAR_JRE_VERSION"
136+
if [ -x "$jre_dir/bin/java" ]; then
137+
export JAVA_HOME="$jre_dir"
138+
return 0
139+
fi
53140

54-
echo "sonar-predictor: first run — downloading $VERSION bundle from Maven Central..." >&2
141+
case "${SONAR_DISABLE_JRE_AUTODOWNLOAD:-}" in
142+
1|true|yes|TRUE|YES)
143+
echo "sonar-predictor: no Java >= $SONAR_MIN_JAVA_VERSION found, and SONAR_DISABLE_JRE_AUTODOWNLOAD is set" >&2
144+
exit 2
145+
;;
146+
esac
147+
148+
require_cmd curl
149+
require_cmd tar
150+
detect_os_arch
151+
152+
local url="$SONAR_JRE_URL_TEMPLATE"
153+
url="${url//\{os\}/$OS}"
154+
url="${url//\{arch\}/$ARCH}"
155+
url="${url//\{version\}/$SONAR_JRE_VERSION}"
156+
157+
echo "sonar-predictor: no Java $SONAR_MIN_JAVA_VERSION+ found — downloading JRE $SONAR_JRE_VERSION ($OS/$ARCH) from $url" >&2
158+
mkdir -p "$(dirname "$jre_dir")"
159+
160+
local tmp; tmp="$(mktemp -d)"
161+
curl -fsSL --retry 3 -o "$tmp/jre.tgz" "$url"
162+
( cd "$tmp" && tar -xzf jre.tgz )
163+
164+
# Find the JRE root (the dir whose bin/java is executable). Handles both
165+
# Linux layout (.../jdk-17.../bin/java) and macOS layout
166+
# (.../jdk-17.../Contents/Home/bin/java).
167+
local java_path home
168+
java_path="$(find "$tmp" -mindepth 2 -path '*/bin/java' -type f -executable 2>/dev/null | head -1 || true)"
169+
if [ -z "$java_path" ]; then
170+
echo "sonar-predictor: downloaded JRE has no bin/java; archive layout unrecognised" >&2
171+
rm -rf "$tmp"
172+
exit 2
173+
fi
174+
home="${java_path%/bin/java}"
175+
mv "$home" "$jre_dir"
176+
rm -rf "$tmp"
177+
178+
if [ ! -x "$jre_dir/bin/java" ]; then
179+
echo "sonar-predictor: JRE install completed but $jre_dir/bin/java is missing" >&2
180+
exit 2
181+
fi
182+
export JAVA_HOME="$jre_dir"
183+
}
184+
185+
# -------- 2. ensure bundle is cached ----------------------------------------
186+
187+
if [ ! -x "$REAL_SONAR" ]; then
188+
require_cmd curl
189+
require_cmd unzip
190+
191+
echo "sonar-predictor: first run — downloading $VERSION bundle from $SONAR_MAVEN_REPO_URL..." >&2
55192
mkdir -p "$(dirname "$SKILL_DIR")"
56193
TMP="$(mktemp -d)"
57194
trap 'rm -rf "$TMP"' EXIT
58195

59-
ZIP="$TMP/bundle.zip"
60-
SHA="$TMP/bundle.zip.sha1"
61-
62-
curl -fsSL --retry 3 -o "$ZIP" "$BASE_URL/$ARTIFACT-$VERSION.zip"
63-
curl -fsSL --retry 3 -o "$SHA" "$BASE_URL/$ARTIFACT-$VERSION.zip.sha1"
196+
curl -fsSL --retry 3 -o "$TMP/bundle.zip" "$BUNDLE_URL_BASE/$ARTIFACT-$VERSION.zip"
197+
curl -fsSL --retry 3 -o "$TMP/bundle.zip.sha1" "$BUNDLE_URL_BASE/$ARTIFACT-$VERSION.zip.sha1"
64198

65-
EXPECTED="$(awk '{print $1}' "$SHA")"
66-
ACTUAL="$(sha1_of "$ZIP")"
199+
EXPECTED="$(awk '{print $1}' "$TMP/bundle.zip.sha1")"
200+
ACTUAL="$(sha1_of "$TMP/bundle.zip")"
67201
if [ "$EXPECTED" != "$ACTUAL" ]; then
68202
echo "sonar-predictor: SHA-1 verification failed (expected $EXPECTED, got $ACTUAL)" >&2
69203
exit 2
70204
fi
71205

72-
unzip -q "$ZIP" -d "$TMP/extracted"
206+
unzip -q "$TMP/bundle.zip" -d "$TMP/extracted"
73207
if [ ! -d "$TMP/extracted/sonar-predictor" ]; then
74-
echo "sonar-predictor: unexpected bundle layout (no sonar-predictor/ dir at zip root)" >&2
208+
echo "sonar-predictor: unexpected bundle layout (no sonar-predictor/ at zip root)" >&2
75209
exit 2
76210
fi
77211

78-
# If another invocation populated the cache while we were downloading,
79-
# respect its work — atomically rename, ignoring failure on race.
80212
mv "$TMP/extracted/sonar-predictor" "$SKILL_DIR" 2>/dev/null || true
213+
trap - EXIT
214+
rm -rf "$TMP"
81215

82216
if [ ! -x "$REAL_SONAR" ]; then
83217
echo "sonar-predictor: bootstrap completed but $REAL_SONAR is not executable" >&2
84218
exit 2
85219
fi
86220
fi
87221

222+
# -------- 3. ensure a usable Java is available ------------------------------
223+
224+
if ! found_java_meets_min; then
225+
install_jre
226+
fi
227+
228+
# -------- 4. hand off -------------------------------------------------------
229+
230+
if [ -n "${JAVA_HOME:-}" ]; then
231+
export JAVA_HOME
232+
export PATH="$JAVA_HOME/bin:$PATH"
233+
fi
234+
88235
exec "$REAL_SONAR" "$@"

plugin/skills/sonar-predictor/bin/sonar.bat

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,34 @@
11
@echo off
22
rem Bootstrap wrapper for the sonar-predictor skill bundle (Windows).
33
rem
4-
rem On first invocation, downloads the analyzer bundle (~150 MB) from Maven
5-
rem Central into the user cache, verifies its SHA-1, and unpacks it. Every
6-
rem subsequent call dispatches to the cached launcher directly — no network.
4+
rem Loads ../config.env (KEY=VALUE lines, # for comments) and uses the
5+
rem configured Maven proxy + bundle version to download the analyzer bundle
6+
rem on first invocation. Env vars of the same name take precedence over the
7+
rem file.
78
rem
8-
rem Override the bundle location for air-gapped or pre-staged installs:
9+
rem Java auto-install is NOT yet supported on Windows — install Java 17+
10+
rem manually (or set JAVA_HOME). The bundle's own launcher will discover it.
11+
rem
12+
rem Override the bundle location for air-gapped / pre-staged installs:
913
rem set SONAR_PREDICTOR_HOME=C:\path\to\extracted\sonar-predictor
1014

1115
setlocal enabledelayedexpansion
1216

13-
rem v0.1.2's dist artifact on Central is the (now-removed) plugin-bundle shape,
14-
rem not the skill-bundle this wrapper expects. v0.1.1 is the last good skill
15-
rem bundle; v0.1.3 onwards will be skill-shaped again.
16-
set "VERSION=0.1.1"
17-
set "BASE_URL=https://repo1.maven.org/maven2/io/github/randomcodespace/sonarpredict/sonar-predictor-dist/%VERSION%"
17+
rem ---- 1. load config.env (env vars already set win) ----
18+
set "CONFIG=%~dp0..\config.env"
19+
if exist "%CONFIG%" (
20+
for /f "usebackq eol=# tokens=1,* delims==" %%a in ("%CONFIG%") do (
21+
if not "%%a"=="" if not defined %%a set "%%a=%%b"
22+
)
23+
)
24+
25+
rem ---- defaults ----
26+
if not defined SONAR_MAVEN_REPO_URL set "SONAR_MAVEN_REPO_URL=https://repo1.maven.org/maven2"
27+
if not defined SONAR_BUNDLE_VERSION set "SONAR_BUNDLE_VERSION=0.1.1"
28+
29+
set "VERSION=%SONAR_BUNDLE_VERSION%"
30+
set "ARTIFACT=sonar-predictor-dist"
31+
set "BUNDLE_URL_BASE=%SONAR_MAVEN_REPO_URL%/io/github/randomcodespace/sonarpredict/sonar-predictor-dist/%VERSION%"
1832

1933
if defined SONAR_PREDICTOR_HOME (
2034
set "SKILL_DIR=%SONAR_PREDICTOR_HOME%"
@@ -30,7 +44,7 @@ set "REAL_SONAR=%SKILL_DIR%\bin\sonar.bat"
3044

3145
if exist "%REAL_SONAR%" goto :exec
3246

33-
echo sonar-predictor: first run -- downloading %VERSION% bundle from Maven Central... 1>&2
47+
echo sonar-predictor: first run -- downloading %VERSION% bundle from %SONAR_MAVEN_REPO_URL%... 1>&2
3448

3549
set "TMP=%TEMP%\sonar-predictor-bootstrap-%RANDOM%-%RANDOM%"
3650
mkdir "%TMP%" || (echo sonar-predictor: failed to create temp dir 1>&2 & exit /b 2)
@@ -39,11 +53,11 @@ set "ZIP=%TMP%\bundle.zip"
3953
set "SHA=%TMP%\bundle.zip.sha1"
4054

4155
powershell -NoProfile -ExecutionPolicy Bypass -Command ^
42-
"$ProgressPreference='SilentlyContinue'; try { Invoke-WebRequest -Uri '%BASE_URL%/sonar-predictor-dist-%VERSION%.zip' -OutFile '%ZIP%' } catch { exit 2 }"
56+
"$ProgressPreference='SilentlyContinue'; try { Invoke-WebRequest -Uri '%BUNDLE_URL_BASE%/%ARTIFACT%-%VERSION%.zip' -OutFile '%ZIP%' } catch { exit 2 }"
4357
if errorlevel 1 (echo sonar-predictor: bundle download failed 1>&2 & rmdir /S /Q "%TMP%" & exit /b 2)
4458

4559
powershell -NoProfile -ExecutionPolicy Bypass -Command ^
46-
"$ProgressPreference='SilentlyContinue'; try { Invoke-WebRequest -Uri '%BASE_URL%/sonar-predictor-dist-%VERSION%.zip.sha1' -OutFile '%SHA%' } catch { exit 2 }"
60+
"$ProgressPreference='SilentlyContinue'; try { Invoke-WebRequest -Uri '%BUNDLE_URL_BASE%/%ARTIFACT%-%VERSION%.zip.sha1' -OutFile '%SHA%' } catch { exit 2 }"
4761
if errorlevel 1 (echo sonar-predictor: SHA-1 download failed 1>&2 & rmdir /S /Q "%TMP%" & exit /b 2)
4862

4963
for /f "tokens=1" %%i in (%SHA%) do set "EXPECTED=%%i"
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# sonar-predictor — bootstrap configuration
2+
#
3+
# Fork-and-go: this is the only file you need to edit to point the launcher
4+
# at a corporate Maven proxy, a private JRE mirror, or a vendored bundle
5+
# version. The launcher reads this file before doing anything.
6+
#
7+
# Format: KEY=VALUE per line, # for comments, no quotes, no shell expansion.
8+
# Both the bash launcher (bin/sonar) and the Windows launcher (bin/sonar.bat)
9+
# parse this file the same way.
10+
#
11+
# An environment variable of the same name takes precedence over the value
12+
# set here — set one to override without editing this file.
13+
14+
# --- Analyzer bundle source ----------------------------------------------------
15+
16+
# Maven proxy / repository where sonar-predictor-dist-<VERSION>.zip lives.
17+
# Public default: Maven Central. Corporate Nexus / Artifactory example:
18+
# SONAR_MAVEN_REPO_URL=https://nexus.corp.example.com/repository/maven-public
19+
SONAR_MAVEN_REPO_URL=https://repo1.maven.org/maven2
20+
21+
# Bundle version. Bumped in lockstep with each plugin release. A fork can pin
22+
# to a vendored / mirrored version without touching the launcher.
23+
SONAR_BUNDLE_VERSION=0.1.1
24+
25+
# --- Java runtime --------------------------------------------------------------
26+
27+
# Minimum Java major version the analyzer requires.
28+
SONAR_MIN_JAVA_VERSION=17
29+
30+
# If no Java >= SONAR_MIN_JAVA_VERSION is found on PATH, in JAVA_HOME, or in
31+
# the common install locations the bundle's launcher already searches, the
32+
# bootstrap downloads a JRE from this URL. Tokens are substituted at download:
33+
# {os} linux | mac (Windows JRE auto-install is not yet supported)
34+
# {arch} x64 | aarch64
35+
# {version} the value of SONAR_JRE_VERSION
36+
#
37+
# Public default: Adoptium Temurin API (302-redirects to a GitHub release).
38+
# Corporate mirror example (predictable archive layout):
39+
# SONAR_JRE_URL_TEMPLATE=https://artifacts.corp.example.com/temurin/{version}/jre-{os}-{arch}.tar.gz
40+
SONAR_JRE_URL_TEMPLATE=https://api.adoptium.net/v3/binary/latest/{version}/ga/{os}/{arch}/jre/hotspot/normal/eclipse
41+
SONAR_JRE_VERSION=17
42+
43+
# Set to 1 (or true, yes) to skip the JRE auto-download even if no Java is
44+
# found — for environments with a policy against the bootstrap fetching
45+
# binaries. The launcher will then print an error and exit instead.
46+
SONAR_DISABLE_JRE_AUTODOWNLOAD=

0 commit comments

Comments
 (0)