使用 sbt 构建时检查错误级别

Checking error level while building with sbt

我想编写一个 windows .cmd 脚本,将所有项目模块发布到本地存储库中。但是我想在可能发生的第一个错误停止。我正在检查 %ERRORLEVEL% 但它始终等于 0,即使 sbt publish-local 命令因某些错误而失败。

@echo on
@setlocal enabledelayedexpansions

set modules=^
    sbt-common^
    common^             

for %%A in (%modules%) do (
    echo ======================================
    echo =          PUBLISHING %%A            =
    echo ======================================
    cd %%A
    call sbt publish-local              
    echo %ERRORLEVEL%       :: <- Always = 0
    if ERRORLEVEL 1 goto error
)

:error
@endlocal
exit /B 1

任何帮助将不胜感激。

试试这个:

@echo on
@setlocal EnableDelayedExpansion

set modules=^
    sbt-common^
    common^             

for %%A in (%modules%) do (
    echo ======================================
    echo =          PUBLISHING %%A            =
    echo ======================================
    cd %%A
    call sbt publish-local              
    echo !ERRORLEVEL!
    if !ERRORLEVEL! geq 1 goto error
)

:error
@endlocal
exit /B 1

注意EnableDelayedExpansion后面不能有s,批处理括号内要用!代替%