我有一个实用程序构建脚本,可以从构建服务器上的各种项目特定的构建脚本中调用。一切正常,直到相对目录结构发生变化。那就是:
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
是否有一种简单的方法可以知道它所在的目录,等同于bash中的dirname $0
?或者我必须做什么,我必须以某种方式从导入脚本中注入它?
答案 0 :(得分:21)
确保imported.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>
答案 1 :(得分:4)