我有一个实用程序构建脚本,可从构建服务器上的各种特定于项目的构建脚本中调用。一切工作正常,直到相对目录结构更改。那是:
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
?还是我必须以某种方式从导入脚本中注入(inject)它? 最佳答案
确保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>