ant-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Anderson, Rob (Global Trade)" <Rob.Ander...@nike.com>
Subject RE: How to conditionally run a group of targets?
Date Fri, 14 Dec 2007 19:22:10 GMT
Scott, In your example the "if" part of the wrapper is redundant, since
all the depends have the same "if" attribute. It would work just the
same, but removing the "if" part of the wrapper would allow the build to
run some targets regardless. 

Excellent example. Just adding my 2 cents,

-Rob Anderson



-----Original Message-----
From: Scot P. Floess [mailto:floess@mindspring.com] 
Sent: Friday, December 14, 2007 6:38 AM
To: Ant Users List
Subject: Re: How to conditionally run a group of targets?

Cyril:

Sorry, was on my way to bed when I responded...  I probably should have 
tried an example...

I think Jan pointed out something like below...

<project default = "all">
    <target name="all" depends="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" depends = "A, B, C, D"/> 

    <target name="A"  if="doit">
        <echo message="A"/>
    </target>

    <target name="B"  if="doit">
        <echo message="B"/>
    </target>

    <target name="C"  if="doit">
        <echo message="C"/>
    </target>

    <target name="D"  if="doit">
        <echo message="D"/>
    </target>

</project>

 


Cyril Sagan wrote:
> Scott - Thanks for the response, but that doesn't work.
>
> The "A,B,C,D" depends targets will be executed first, it is only the
body of "wrapper" that's conditional based on the property.
>
> I'm still looking for an elegant solution.
>
> --Cyril
>
> ________________________________________
> From: Scot P. Floess [floess@mindspring.com]
> Sent: Thursday, December 13, 2007 9:46 PM
> To: Ant Users List
> Subject: Re: How to conditionally run a group of targets?
>
> Why don't you try this...
>
> <target name = "wrapper" if = "doit"  depends = "A, B, C, D"/>
>
> The point is, the depends attribute acts as your grouping ;)
>
> Cyril Sagan wrote:
>   
>> 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
>>
>>
>>
>>     
>
> --
> Scot P. Floess
> 27 Lake Royale
> Louisburg, NC  27549
>
> 252-478-8087 (Home)
> 919-754-4592 (Work)
>
> Chief Architect JPlate   http://sourceforge.net/projects/jplate
> Chief Architect JavaPIM  http://sourceforge.net/projects/javapim
> QA Engineer OpenQabal    http://openqabal.dev.java.net
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
> For additional commands, e-mail: user-help@ant.apache.org
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
> For additional commands, e-mail: user-help@ant.apache.org
>
>
>   

-- 
Scot P. Floess
27 Lake Royale
Louisburg, NC  27549

252-478-8087 (Home)
919-754-4592 (Work)

Chief Architect JPlate   http://sourceforge.net/projects/jplate
Chief Architect JavaPIM  http://sourceforge.net/projects/javapim
QA Engineer OpenQabal    http://openqabal.dev.java.net



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


Mime
View raw message