From 28fbfbeff02d608a91aaf41730a88a4213de8fdd Mon Sep 17 00:00:00 2001 From: it-education-md Date: Fri, 13 Feb 2026 05:43:59 -0500 Subject: [PATCH] [2.x] fix: Parse sbtVersion robustly in sbt.bat (sbt#8717) **Problem** Windows batch parsing for `sbtVersion` used a fragile token extraction that could capture non-version tokens from noisy output. **Solution** Updated `:set_sbt_version` to select and validate version-shaped tokens and fallback to `build_props_sbt_version` when parsing is noisy. --- launcher-package/src/universal/bin/sbt.bat | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/launcher-package/src/universal/bin/sbt.bat b/launcher-package/src/universal/bin/sbt.bat index 8d76e17a7..b694ca349 100755 --- a/launcher-package/src/universal/bin/sbt.bat +++ b/launcher-package/src/universal/bin/sbt.bat @@ -1122,8 +1122,16 @@ echo. exit /B 1 :set_sbt_version -rem set project sbtVersion -for /F "usebackq tokens=2" %%G in (`CALL "!_JAVACMD!" -jar "!sbt_jar!" "sbtVersion" 2^>^&1`) do set "sbt_version=%%G" +set "sbt_version=" +for /F "usebackq tokens=1,2 delims= " %%a in (`CALL "!_JAVACMD!" -jar "!sbt_jar!" "sbtVersion" 2^>^&1`) do ( + if "%%a" == "[info]" ( + set "_version_candidate=%%b" + ) else ( + set "_version_candidate=%%a" + ) + echo !_version_candidate!| findstr /R "^[0-9][0-9.]*[-+0-9A-Za-z._]*$" >nul && set "sbt_version=!_version_candidate!" +) +if not defined sbt_version if defined build_props_sbt_version set "sbt_version=!build_props_sbt_version!" exit /B 0 :error