通过ANT获取和使用父目录

时间:2011-08-04 17:13:36

标签: php ant phpunit relative-path build.xml

我有一个目录结构&像这样的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中获取此路径?

2 个答案:

答案 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测试。)