ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Matt Benson <gudnabr...@yahoo.com>
Subject Re: hotswap via ant
Date Fri, 02 Apr 2004 16:31:46 GMT
You should be able to use the date pattern "MM/dd/yyyy
hh:mm a" to add the AM/PM to your date.  That's wild
that the date selector doesn't use seconds.  Two
possibilities come to mind:

-sleep for a minute after generating the timestamp. :(
-use ant-contrib's <outofdate> task to set a
comma-delimited list of out-of-date target files into
a property, to be used as the includes attribute of a
<fileset>.

In Ant, two things that would also make sense:
-Add a format attribute to the date selector,
defaulting to the current one.
-Add a millis attribute to <tstamp>, incompatible with
its pattern attribute.

-Matt

--- David Kavanagh <dak@dotech.com> wrote:
> It's Alive! Now, I just need some help working out
> the file selection 
> part. (which is using existing Ant constructs).
> Here is a sample of my build file.
> 
> <target name="hotswap" depends="init"
> description="Compile and Hotswap 
> changed classes">
>     <taskdef name="hotswap" 
> classname="org.apache.tools.ant.taskdefs.Hotswap"/>
>     <mkdir dir="${build.classes.dir}"/>   
>     <tstamp>
>         <format property="class.stamp"
> pattern="MM/dd/yyyy hh:mm" />
>     </tstamp>
>     <echo message="timestamp = ${class.stamp}"/>
>     <javac .../>
>     <hotswap verbose="true" hotswap="true"
> hsaddress="9000">
>         <fileset dir="${build.classes.dir}"
> includes="**/*.class">
>             <date datetime="${class.stamp} AM"
> when="after"/>
>         </fileset>
>     </hotswap>
> </target>
> 
> This is an example of the timestamp that is
> returned. Is there a way to 
> get this to use seconds as well? The granularity
> doesn't seem good 
> enough for my purpose.
>      [echo] timestamp = 04/02/2004 11:07
> 
> In the <date>, it requires the AM or PM part, which
> I'm just putting in 
> by hand (which isn't good either). Is there a better
> way to select files 
> that have changed in the classes dir since the javac
> has run?
> 
> Once I get this worked out, I'll clean up the task a
> little and make it 
> available for everyone to try. (and provide some
> docs as well!)
> 
> Thanks,
> David
> 
> PS. I tested this by coding a specific class
> filename, since the date 
> thing isn't working yet.
> 
> Thus Spoke Matt Benson:
> 
>
>http://ant.apache.org/manual/CoreTypes/selectors.html#dateselect
> >
> >You would have to use a nested <format> element in
> >your <tstamp> to create the date in the right
> format
> >for the date selector, but aside from that I can't
> see
> >any problems...
> >
> >-Matt
> >
> >--- dak@dotech.com wrote:
> >  
> >
> >>This sounds good to me! The less grunt work I have
> >>to do in my task, the better!
> >>I grabbed teh 1.6.1 source release and built it.
> If
> >>you could point me to the
> >><date> file selector you mention, it would help me
> a
> >>lot. I just poked around
> >>and it didn't jump out at me. I would like it if
> my
> >>task could just deal with a
> >>list of class files provided via some built-in
> >>filtering means.
> >>
> >>Thanks,
> >>David
> >>
> >>Quoting Matt Benson <gudnabrsam@yahoo.com>:
> >>
> >>    
> >>
> >>>Basically you should make any task as atomic as
> >>>possible.  So all your task would need to know
> >>>      
> >>>
> >>about
> >>    
> >>
> >>>is a <fileset>.  Then it becomes the user's
> >>>      
> >>>
> >>problem
> >>    
> >>
> >>>how to select which files to include.  One way
> >>>      
> >>>
> >>might
> >>    
> >>
> >>>be to use a <tstamp>
> >>>to set a baseline time, then compile, then use a
> >>><date> file selector to get the updated classes. 
> >>>Another way might use ant-contrib's <outofdate>
> to
> >>>determine which sources should be recompiled. 
> You
> >>>could then compile only those sources to some
> >>>temporary build area, then hotswap only those
> >>>      
> >>>
> >>classes.
> >>    
> >>
> >>> The point is that others have designed ways in
> >>>      
> >>>
> >>which
> >>    
> >>
> >>>the files can be selected, so you gain maximum
> >>>flexibility (and minimum RESPONSIBILITY) the less
> >>>      
> >>>
> >>your
> >>    
> >>
> >>>Task is expected to do.
> >>>
> >>>-Matt
> >>>
> >>>--- dak@dotech.com wrote:
> >>>      
> >>>
> >>>>When I was toying with a separate task, I
> >>>>        
> >>>>
> >>wondered
> >>    
> >>
> >>>>if <uptodate> could be use
> >>>>somehow to create a <fileset>. I don't see now,
> >>>>        
> >>>>
> >>but
> >>    
> >>
> >>>>that would sure be a nice
> >>>>feature. Then, if I could assign an ID so I
> >>>>        
> >>>>
> >>could
> >>    
> >>
> >>>>make a <fileset> of files
> >>>>that aren't uptodate, run the compile, then take
> >>>>that same <fileset> as input
> >>>>to the <hotswap> target.
> >>>>The idea of a timestamp file could work. The
> >>>>sequence might be something like.
> >>>><touch file="timestamp"/>
> >>>><javac .../>
> >>>><hotswap classesdir="foo" host="localhost"
> >>>>port="9000" timefile="timestamp">
> >>>>  <patternset>
> >>>>     ... some pattern to apply to the classes
> >>>>        
> >>>>
> >>dir
> >>    
> >>
> >>>>...
> >>>>  </patternset>
> >>>></hotswap>
> >>>>
> >>>>That way, the hotswap task would check the files
> >>>>        
> >>>>
> >>in
> >>    
> >>
> >>>>the classes dir based on the
> >>>>patternset and/or the timestamp.
> >>>>
> >>>>Seriously, I'm open to feedback. I might as well
> >>>>        
> >>>>
> >>do
> >>    
> >>
> >>>>it right the first time!
> >>>>
> 
=== message truncated ===


__________________________________
Do you Yahoo!?
Yahoo! Small Business $15K Web Design Giveaway 
http://promotions.yahoo.com/design_giveaway/

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


Mime
View raw message