从ant文件中引用ant脚本位置


问题内容

我有一个实用程序构建脚本,可从构建服务器上的各种特定于项目的构建脚本中调用。一切工作正常,直到相对目录结构更改。那是:

trunk/
    utilities/
        imported.xml
        some_resource_file
    projectName/
        importing.xml

工作正常,但有时我们需要:

trunk/
    importing.xml
    utilities/
        imported.xml
        some_resource_file
    projectName/

问题是imported.xml需求some_resource_file,目前通过参考来解决../utilities/some_resource_file。这显然在第一种情况下有效,因为工作目录是的同级utilities

有没有一种简单的方法imported.xml可以知道它所在的目录(相当于dirname $0bash)?还是我必须以某种方式从导入脚本中注入它?


问题答案:

确保import.xml使用name属性定义项目。然后,您可以使用该名称作为通过ant.file.name属性的ant文件的绝对路径。

我已经大写了IMPORTED,因此您可以在代码中轻松看到它。

<project
  name="IMPORTED"
>
  <dirname
    property="IMPORTED.basedir"
    file="${ant.file.IMPORTED}"
  />
  <property name="myresource"
    location="${IMPORTED.basedir}/some_resource_file"
  />
</project>