ant-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Diane Holt <hol...@yahoo.com>
Subject Re: Making Jumps or doing Loops!!
Date Thu, 23 Aug 2001 20:43:46 GMT
[Sorry if this ends up getting posted twice, but it was the first one I
sent, and I've yet to see it come through, so I'm not sure if it really
went out.]

Actually, I'd take advantage of some of the new stuff available in 1.4
(finally found some time to pick it up and start trying things out :) --
namely, the new "inheritAll" attr for <antcall> and the new <condition>
task, in conjunction with <propertyfile>'s incrementing functionality. For
example:

  <property name="maxCount" value="10"/>

  <target name="doWhile">
    <propertyfile file="counter.properties">
      <entry key="counter" type="int" operation="+"/>
    </propertyfile>
    <property file="counter.properties"/>
    <condition property="loopDone">
      <equals arg1="${counter}" arg2="${maxCount}"/>
    </condition>
    <antcall target="doit"/>
  </target>

  <target name="doit" unless="loopDone">
    <echo message="Do stuff here..."/>
    <antcall target="doWhile" inheritAll="no"/>
  </target>

will "Do stuff here" 9 times (it's not zero-based :)  [Note: Make sure
something removes counter.properties before the "doit" target gets run.]

Diane

--- Don Taylor <donald_l_taylor_jr@yahoo.com> wrote:
> 
> --- Edgar Sánchez <vesanchez@yahoo.com> wrote:
> >   Thanks Don
> > 
> >     just a question.
> >    When you put the sample of the counter the "."
> > after the counter means that the value will increment
> > in one??
> 
> Not the value, the property name. I'm creating a series of properties:
> 
> counter
> counter.
> counter..
> counter...
> 
> The value is whatever.
> 
> -- Don
> 
> >    <property name="${counter}." value="whatever" />
> >   or how do I increment in one the variable value of
> > my counter?
> > 
> >   Thanks again
> > VES
> > 
> > 
> > --- Don Taylor <donald_l_taylor_jr@yahoo.com> wrote:
> > > 
> > > --- Edgar Sánchez <vesanchez@yahoo.com> wrote:
> > > >   Hi everyone is Vincent again...
> > > > 
> > > >     now I've 2 questions, well those are for the
> > > same
> > > > reason..
> > > >   I was wondering if here in Ant could I make some
> > > > jumps in order to repeat the same procedure with
> > > other
> > > > caracteristics, 
> > > 
> > > Yes, check out the antcall task. This allows you to
> > > execute the
> > > same target multiple times with different sets of
> > > "inputs".
> > > 
> > > 
> > > or if I can use loops like For or
> > > > While to do the same, keeping a counter in order
> > > to
> > > > make conditions to execute the same procedure or
> > > same
> > > > target with diferent actions.
> > > > 
> > > >   Is it possible?
> > > 
> > > When looping, you have to create a "kick-out"
> > > condition. I used the
> > > target's unless attribute. The idea is to loop until
> > > the property is
> > > set. However, because a target can't antcall itself,
> > > you have to
> > > replicate the target and have them cross-call each
> > > other:
> > > 
> > > 
> > > <target name="worker">
> > >   <!-- This does the actual work. May depend on
> > > other workers. -->
> > > </target>
> > > 
> > > <target name="looper_1" depends="worker"
> > > unless="some.condition">
> > >   <antcall target="looper_2"/>
> > > </target>
> > > 
> > > <target name="looper_2" depends="worker"
> > > unless="some.condition">
> > >   <antcall target="looper_1"/>
> > > </target>
> > > 
> > > 
> > > This takes care of while loops. I've never tried
> > > implementing a for
> > > loop in Ant. I suppose you could do something like
> > > the following
> > > in the worker target:
> > > 
> > > <property name="counter" value="counter" />
> > > 
> > > <target name="worker">
> > >   <property name="${counter}." value="whatever" />
> > > </target>
> > > 
> > > Then if you wanted to loop 3 times:
> > > 
> > > <target name="looper_1" depends="worker"
> > > unless="counter...">
> > >   <antcall target="looper_2"/>
> > > </target>
> > > 
> > > <target name="looper_2" depends="worker"
> > > unless="counter...">
> > >   <antcall target="looper_1"/>
> > > </target>
> > > 
> > > -- Don
> > >
> > > >   thank you
> > > > VES

=====
(holtdl@yahoo.com)



__________________________________________________
Do You Yahoo!?
Make international calls for as low as $.04/minute with Yahoo! Messenger
http://phonecard.yahoo.com/

Mime
View raw message