barfuin
barfuin

Reputation: 17474

Ant <chdir> task?

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!

Upvotes: 4

Views: 7610

Answers (1)

barfuin
barfuin

Reputation: 17474

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.

Upvotes: 4

Related Questions