ant-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Cyril Sagan <Cyril.Sa...@sas.com>
Subject How to conditionally run a group of targets?
Date Thu, 13 Dec 2007 23:48:46 GMT
Our build script needs to run an arbitrary *group* of targets based on
a single property.  Can you help me find a clean way to do this?

Here's an "almost solution" which illustrates what I'd like to
accomplish:

    <target name="all" depends="init, decide_to_run_group, wrapper" />

    <target name="decide_to_run_group">
        <condition property="doit" value="true">
            <some-boolean-test/>
        </condition>
    </target>

    <target name="wrapper" if="doit">
        <antcall>
            <target name="A" />
            <target name="B" />
            <target name="C" />
            <target name="D" />
        </antcall>
    </target>


This does not work.  The problem is that any properties set in the
<antcall>'d targets will not be visible in the calling environment.
Targets A,B,C,etc -- not all of which I control, so I cannot
restructure -- may have side effects, setting state in properties that
I need to have access to.

Regarding the "<antcall> almost solution", I see that there are ways
to pass properties "down to" <antcall>, but I do not know of a clean
way to "pass back".  I found a year+ old question on ant-dev asking
about this, but never saw an answer.

In any case, we aren't set on using (enhancing?) <antcall>, it was
just close to a solution.

Goal is to group the set of targets.  I'm hoping to find a solution
less awkward than this:
    <target name="A" if="doit" ... />
    <target name="B" if="doit" ... />
    <target name="C" if="doit" ... />
    <target name="D" if="doit" ... />

Thanks for any suggestions.

--Cyril

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
For additional commands, e-mail: user-help@ant.apache.org


Mime
View raw message