如何在Shell脚本中调用不同目录下的Ant脚本?
如何在Shell脚本中跨目录调用Ant命令
没问题,这其实是Shell脚本里处理跨目录构建任务的常见场景,给你两种简单可靠的方法来实现:
方法1:切换到目标目录执行Ant(推荐)
这种方法最直观,也能避免Ant脚本里的相对路径出错——毕竟很多Ant脚本都是基于自身所在目录写的相对路径引用。如果担心切换目录会影响脚本后续的操作,可以用子shell(把命令包在括号里),这样目录切换只会在子shell里生效,执行完后脚本自动回到原来的主目录。
示例代码:
#!/bin/bash # 执行/opt/myApp/module1下的patch.xml # 用&&确保只有cd成功才执行Ant,避免目录不存在时出错 (cd /opt/myApp/module1 && ant -f patch.xml) # 执行/opt/myApp2/module2下的build.xml # build.xml是Ant默认找的脚本名,所以可以省略-f参数 (cd /opt/myApp2/module2 && ant)
方法2:直接指定Ant的工作目录和脚本路径
如果你不想切换目录,也可以通过Ant自带的参数直接指定工作目录和脚本文件的绝对路径,这样不用切换目录就能让Ant正确解析脚本里的相对路径。
示例代码:
#!/bin/bash # 执行/opt/myApp/module1下的patch.xml # -Dbasedir指定Ant的工作目录,-f指定脚本的绝对路径 ant -Dbasedir=/opt/myApp/module1 -f /opt/myApp/module1/patch.xml # 执行/opt/myApp2/module2下的build.xml ant -Dbasedir=/opt/myApp2/module2 -f /opt/myApp2/module2/build.xml
小提示
如果希望构建流程中任何一步失败就立刻终止脚本,可以在脚本开头加上set -e,这样只要某个Ant命令执行失败(返回非0状态码),脚本就会停止运行,避免后续无效操作。
内容的提问来源于stack exchange,提问作者Curious Coder
相关产品推荐
相关产品推荐

