我在 Linux 中不同项目的构建文件中看到经常使用的out.absolute.dir
,我真的很好奇它到底意味着什么。我编写了一个简短的构建文件,我在以下几行中提到过
<project name="Test_Ant_APK" default="print">
<property name="cal.out.dir" location="${out.absolute.dir}"/>
<target name="print">
<echo>p=${cal.out.dir}</echo>
</target>
</project>
当我从命令行运行这个构建文件时,我得到了这个输出
Buildfile: /home/jody/workspace/Test_Ant_APK/build.xml
print:
[echo] p=/home/jody/workspace/Test_Ant_APK/${out.absolute.dir}
BUILD SUCCESSFUL
Total time: 0 seconds
我对输出有点困惑。我认为我们应该有p=/home/jody/workspace/Test_Ant_APK
输出。为什么我们${out.absolute.dir}
在输出的末尾有?这是什么意思?这个构建文件有问题吗?
具体指向哪里out.absolute.dir
?
答案1
(这开始是一条评论,但变得太长,所以现在是一个答案)
out.absolute.dir
在 Linux 中没有特定的含义。它看起来像是 Ant 构建脚本使用的变量。如果它频繁出现在许多不相关的 Ant 脚本中,则它可能只是许多 Ant 用户/开发人员使用的常见约定(但仍然完全任意,在 Ant 之外本身没有特殊含义)。${out.absolute.dir}
只是确保 shell 明确使用该变量(如果其他文本紧随其后)的一种方法 - 例如,${out.absolute.dir}foo
被视为变量$out.absolute.dir
后跟文字文本foo
,而$out.absolute.dirfoo
被视为完全不同的变量$out.absolute.dirfoo
(可能不存在)并会导致脚本中出现错误,或者更糟糕的是,导致脚本执行不应该执行的操作,例如写入而不是写入)/home/jody/workspace/Test_Ant_APK/
的子目录.../Test_Ant_APK
/home/jody/workspace/Test_Ant_APK/${out.absolute.dir}
只是将变量的值附加$out.absolute.dir
到/home/jody/workspace/Test_Ant_APK/
.要准确找出该变量指向的位置,您需要彻底检查 Ant 构建脚本以找到为其赋值的行。如果没有脚本副本,我们无法回答这个问题。我建议
grep 'out.absolute.dir.*='
在您的 ant 和相关的构建脚本上运行。$out.absolute.dir
可能(并且很可能)是由其他变量构建的,因此您也必须查找它们的值。
该变量可能是由 Ant 本身自动定义的。我对 Ant 的了解还不够深入,无法确定。
答案2
让我尝试用一个例子来解释它:
假设您的主目录是/home/jody
假设您的家下有一个名为work
当您登录时,您会自动进入主目录。因此,当您执行:
cd work #(*)
你可以在这个目录中找到自己work
。
但假设您在其他目录中,正在执行其他操作,并且需要转到该work
目录。在这种情况下你运行
cd /home/jody/work #(**)
。
(*) is a relative directory
(**) is an absolute directory
如果您查看消息之前的最后一行BUILD SUCCESSFUL
,您可以看到目录路径是绝对路径。我不知道你的构建过程,但看起来它告诉你,据我所知,你看到的路径是绝对路径。