我有一个目录结构&像这样的build.xml
/path-to-project/src/prj1
/path-to-project/src/prj2
/path-to-project/tests
/path-to-project/tests/build.xml
我必须以某种方式获得路径
/path-to-project/
在我的build.xml中
我的build.xml就像这样
<project name="php-project-1" default="build" basedir=".">
<property name="source" value="src"/>
<target name="phploc" description="Generate phploc.csv">
<exec executable="phploc">
<arg value="--log-csv" />
<arg value="${basedir}/build/logs/phploc.csv" />
<arg path="${source}" />
</exec>
</target>
</project>
我在某种程度上希望将${source}
的值视为/path-to-project/src/
,但我没有将其${parent.dir}
是否可以在build.xml中获取此路径?
答案 0 :(得分:9)
您可以像在命令行中一样使用..
来导航到父目录。
<project name="php-project-1" default="build" basedir=".">
<property name="root.dir" location=".."/>
<property name="source" location="${root.dir}/src"/>
...
</project>
更新:根据您应接受的马丁回答,将value
更改为location
。
答案 1 :(得分:7)
您应该使用location
属性而不是value
来设置source
属性:
<property name="source" location="src"/>
然后, Ant将属性设置为给定位置的绝对路径。如果该位置看起来像相对路径,则相对于basedir计算绝对路径。 property
task还有其他属性可用于进一步调整此值。
要获取您的basedir的父目录,您可以类似地使用:
<property name="parent.dir" location=".." />
(至少在unix机器上,未经过Windows测试。)