out.absolute.dir 在 ant 中意味着什么?

out.absolute.dir 在 ant 中意味着什么?

我在 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

(这开始是一条评论,但变得太长,所以现在是一个答案)

  1. out.absolute.dir在 Linux 中没有特定的含义。它看起来像是 Ant 构建脚本使用的变量。如果它频繁出现在许多不相关的 Ant 脚本中,则它可能只是许多 Ant 用户/开发人员使用的常见约定(但仍然完全任意,在 Ant 之外本身没有特殊含义)。

  2. ${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

  3. /home/jody/workspace/Test_Ant_APK/${out.absolute.dir}只是将变量的值附加$out.absolute.dir/home/jody/workspace/Test_Ant_APK/.

  4. 要准确找出该变量指向的位置,您需要彻底检查 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,您可以看到目录路径是绝对路径。我不知道你的构建过程,但看起来它告诉你,据我所知,你看到的路径是绝对路径。

相关内容