Ant <chdir> task?

barfuin picture barfuin · Jul 1, 2013 · Viewed 6.9k times · Source

How can I change the current working directory in Ant?

The Ant documentation has no <chdir> task, and it seems to me that it is the best practice NOT to change the current working directory.

But let's assume we still want to do it - how would you accomplish that? Thanks!

Answer

barfuin picture barfuin · Jul 3, 2013

Following Mark O'Connor's hint in the question comments, I came up with the following solution:

<project name="cwd" default="parent">
    <target name="parent">
        <echo message="Current working directory in parent: ${basedir}" />
        <ant antfile="../build.xml" dir="subdir" target="subDirTarget"
            inheritAll="true" inheritRefs="true" /> 
    </target>

    <target name="subDirTarget">
        <echo message="Current working directory in subDirTarget: ${basedir}" />
    </target>
</project>

This works - output:

Buildfile: C:\Sandbox\parent\build.xml
parent:
     [echo] Current working directory in parent: E:\Sandbox\parent
subDirTarget:
     [echo] Current working directory in subDirTarget: E:\Sandbox\parent\subdir
BUILD SUCCESSFUL
Total time: 1 second

I also tried using Ant-Contrib's <var> task to change basedir, but that seemed to have no effect.