问题
I have a utility build script that gets called from a variety of project-specific build scripts on a build server. Everything works fine, until the relative directory structure changes. That is:
trunk/
utilities/
imported.xml
some_resource_file
projectName/
importing.xml
works just fine, but sometimes we need:
trunk/
importing.xml
utilities/
imported.xml
some_resource_file
projectName/
The problem is that imported.xml
needs some_resource_file
and currently gets to it by referring to ../utilities/some_resource_file
. This obviously works in the first case because the working directory is a sibling of utilities
.
Is there a simple way for imported.xml
to know what directory it's in, something equivalent to dirname $0
in bash? Or do I have to do I have to somehow inject this from the importing script?
回答1:
Make sure that imported.xml defines project with name
attribute. Then you can use that name for an absolute path to the ant file through ant.file.name
property.
I have capitalized IMPORTED, so you can easily see it in the code.
<project
name="IMPORTED"
>
<dirname
property="IMPORTED.basedir"
file="${ant.file.IMPORTED}"
/>
<property name="myresource"
location="${IMPORTED.basedir}/some_resource_file"
/>
</project>
回答2:
Found the answer:
http://ant.apache.org/manual/Tasks/import.html
Check under resolving files against the imported file.
来源:https://stackoverflow.com/questions/1676939/referencing-ant-script-location-from-within-ant-file