首页 > 解决方案 > 在 powershell 中跟踪 Maven 命令状态

问题描述

我有一个 powershell 脚本,我正在执行以下操作。

1 克隆 4 不同的 GIT 存储库 2 构建相同

现在的问题是我遇到的是下面的建筑代码

try
    {
        echo "Initiating mvn Install for msg-lib"
        mvn -f "***\pom.xml" clean install
        echo "mvn Install for * Completed"  
    }
catch
    {
        echo "We had failure in Building the Code for *, the pipeline will fail now"
        $returnStatus = 1   
    }

像这样,对于 1 个应用程序,我每个有四个块,现在我希望如果构建失败,即如果 BUILD FAILS,那么它应该在 catch 块中被跟踪并最终退出 ps 脚本,退出状态为 1

但是现在,即使有任何构建失败,它也会进入下一阶段而不会失败。

请帮助我如何从 clean install maven 命令跟踪构建状态?

我尝试使用Invoke-Expression,但它跟踪完整的构建日志而不是确切的状态

Invoke-Expression "mvn -f *\pom.xml' clean install") | Tee -variable result

需要一种方法来检查 Maven 构建的状态,是好是坏

标签: powershellmavenmaven-3

解决方案


当您运行批处理脚本或 power shell 脚本来执行 maven 命令时,它类似于来自外部的脚本,并且该脚本将以自己的方式运行。这意味着您的脚本正在将任务委托给另一个脚本。有两种可能,另一种可能成功,也可能失败。您可以手动跟踪是否有故障。你必须以下列方式。

set mvnBuildError=0
if not errorlevel 0 set mvnBuildError=1
if %mvnBuildError%==1 (
    REM do other stuffs
)

推荐阅读