通过ANT获取和使用父目录

Sum*_*itk 4 php ant phpunit build.xml relative-path

我有一个像这样的目录结构和build.xml

    /path-to-project/src/prj1
    /path-to-project/src/prj2

    /path-to-project/tests
    /path-to-project/tests/build.xml
Run Code Online (Sandbox Code Playgroud)

我必须以某种方式得到路径

    /path-to-project/
Run Code Online (Sandbox Code Playgroud)

在我的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>
Run Code Online (Sandbox Code Playgroud)

在这里,我莫名其妙地想要得到的值${source}作为/path-to-project/src/,但我没有用得到它${parent.dir}

是否可以在build.xml中获取此路径?

Dav*_*ess 9

您可以..像在命令行上一样使用导航到父目录.

<project name="php-project-1" default="build" basedir=".">
  <property name="root.dir" location=".."/>
  <property name="source" location="${root.dir}/src"/>
  ...
</project>
Run Code Online (Sandbox Code Playgroud)

更新:更改valuelocation按马丁的答案,你应该接受.


mar*_*ton 7

您应该使用该location属性而不是value设置source属性:

<property name="source" location="src"/>
Run Code Online (Sandbox Code Playgroud)

然后,Ant将属性设置为给定位置的绝对路径.如果该位置看起来像相对路径,则相对于basedir计算绝对路径.该property任务具有其他属性,您可以使用它们进一步调整此值.

要获取您的basedir的父目录,您可以类似地使用:

<property name="parent.dir" location=".." />
Run Code Online (Sandbox Code Playgroud)

(至少在unix机器上,没有在windows上测试过.)