我编写了一个按顺序运行多个 ant 构建的批处理文件。我想知道是否有办法保存每个构建的结果(无论成功还是失败(并在最后显示它?例如:
Project1 - Success
Project2 - Success
Project3 - Failed
Project4 - Success
我无法编辑任何 ant 构建文件,只能编辑用于运行它们的批处理文件:
@echo off
cd c:<project1_dir>build
call C:Homeapache-ant-1.9.4binant -buildfile build1.xml
echo.
cd c:<project2_dir>build
call C:Homeapache-ant-1.9.4binant -buildfile build2.xml
echo.
cd c:<project3_dir>build
call C:Homeapache-ant-1.9.4binant -buildfile build3.xml
echo.
cd c:<project4_dir>build
call C:Homeapache-ant-1.9.4binant -buildfile build4.xml
谢谢!
更新:
根据David W的回答,我想出了以下内容:
@echo off
cd c:<project1_dir>build
call C:Homeapache-ant-1.9.4binant -buildfile build1.xml
set result1=%ErrorLevel%
echo.
cd c:<project2_dir>build
call C:Homeapache-ant-1.9.4binant -buildfile build2.xml
set result2=%ErrorLevel%
echo.
cd c:<project3_dir>build
call C:Homeapache-ant-1.9.4binant -buildfile build3.xml
set result3=%ErrorLevel%
echo.
cd c:<project4_dir>build
call C:Homeapache-ant-1.9.4binant -buildfile build4.xml
set result4=%ErrorLevel%
if "%result1%"=="0" (
echo Project1: Succeeded
) else (
echo Project1: Failed
)
if "%result2%"=="0" (
echo Project2: Succeeded
) else (
echo Project2: Failed
)
if "%result3%"=="0" (
echo Project3: Succeeded
) else (
echo Project3: Failed
)
if "%result4%"=="0" (
echo Project4: Succeeded
) else (
echo Project4: Failed
)
上面的代码完全符合我想要它的作用。 谢谢一堆!
良好的构建中返回退出代码 0
,在不良构建上返回非零的退出代码。这存储在errorLevel
中,可以使用 if
语句进行测试:
if errorlevel 1 (
echo "Job Failed"
)
if %ErrorLevel% EQU 0 (
echo "Job Succeeded
)
或者类似的东西...我并没有真正了解我的 Windows 批处理文件语法。我不知道call
如何影响ErrorLevel
的设置。您可能必须在调用的脚本中将环境变量设置为ErrorLevel
,然后从那里开始工作。
看看使用像 Jenkins 这样的持续构建系统,它将为你自动化很多这些问题。Jenkins 可以构建:
- 在特定时间。
- 当源代码更改时。
- 按需
- 或上述的组合(每天下午 5 点构建,但前提是源代码已更改(。
移动到独立的服务器(不再,它适用于我的机器问题(,Jenkins 将保留构建输出,在其仪表板上显示哪些作业成功或失败,甚至在构建失败时发送电子邮件(或推文或 IM(特定人员(包括罪魁祸首(。如果使用单元测试,Jenkins 可以运行单元测试,并显示其中有多少测试成功或失败。
Jenkins使用Java,但它相当容易设置——即使在Windows系统上也是如此。它可以使用 Tomcat 或 JBoss 作为应用程序服务器引擎,也可以使用自己的内部应用程序服务器。