是否可以在 Apache Ant build.xml 脚本中使用 bash 别名?

问题描述 投票:0回答:1

我使用 Apache Ant 从源代码自动构建程序。

build.xml
exec
任务,命令
lazbuild
在我的机器上未在路径中注册,需要使用一些附加参数来调用。所以我用命令在
~/.bashrc
中创建别名:

alias lazbuild="/home/artem/fpcupdeluxe/lazarus/lazbuild --pcp='/home/artem/fpcupdeluxe/config_lazarus' --lazarusdir='/home/artem/fpcupdeluxe/lazarus'"

当我在终端中手动输入

lazbuild
时,它工作正常,但是当 Ant 开始构建时,它会失败并出现错误:

/home/artem/Projects/Lazarus/AutoScreenshot/build.xml:87:执行失败:java.io.IOException:无法运行程序“lazbuild”(在目录“/home/artem/Projects/Lazarus/AutoScreenshot”中):错误=2,没有文件或目录。

我尝试也在

~/.bash_profile
~/.profile
aliases.sh
目录中的新文件
/etc/profile.d/
创建别名,但没有成功。

有什么想法可以做到这一点吗? 谢谢。

linux build ant lazarus
1个回答
0
投票

通过将别名转换为 shell 脚本来省去麻烦。创建一个包含

~/bin/lazbuild

#!/bin/sh
/home/artem/fpcupdeluxe/lazarus/lazbuild --pcp='/home/artem/fpcupdeluxe/config_lazarus' --lazarusdir='/home/artem/fpcupdeluxe/lazarus' "$@"

运行

chmod +x ~/bin/lazbuild
,如果您还没有
PATH="$PATH:$HOME/bin"
,请将其添加到
.bashrc
中。
lazbuild
现在将在所有上下文中充当真正的命令。


如果您确实想使用 bash 别名,则必须调用 bash、启用别名扩展、获取定义并在单独的解析单元中调用命令。这是一个非常糟糕的做法:

<exec executable="bash">
  <arg value="-c" />
  <arg value="shopt -s expand_aliases; source ~/.bashrc; eval lazbuild" />
</exec>
© www.soinside.com 2019 - 2024. All rights reserved.