我让maven运行bash来使用Docker构建一些东西。
<plugin>
...
<artifactId>maven-antrun-plugin</artifactId>
...
<exec executable="${basedir}/generate.sh" failonerror="true">
<arg value="${thrift.version}" />
...
bash脚本运行如下:
for file in src/main/thrift/*.thrift; do
echo "Compiling ${file}"
docker run {...} thrift:${THRIFT_VERSION} thrift {...}
done
我的问题是,当Docker找不到我要求的版本时,它在控制台中显示错误但它没有“失败”:它只是继续构建。
[exec] Compiling src/main/thrift/amsException.thrift
[exec] docker: Tag 0.9.0 not found in repository docker.io/library/thrift.
[exec] See 'docker run --help'.
[exec] Unable to find image 'thrift:0.9.0' locally
因此maven说
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
如何在无法找到版本时使Docker抛出错误?我的最终目标是Maven在发生这种情况时无法进行清理安装。
干杯!
答案 0 :(得分:1)
您可以查看docker run
退出代码。如果它不是0,则中止你的脚本。
for file in src/main/thrift/*.thrift; do
echo "Compiling ${file}"
docker run {...} thrift:${THRIFT_VERSION} thrift {...}
if [ $? != 0 ]; then
exit -1
fi
done