ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Kavanagh <...@dotech.com>
Subject Re: hotswap via ant
Date Sun, 04 Apr 2004 15:05:03 GMT
never mind about the <outofdate>, solved my own problem!

Thus Spoke David Kavanagh:

> Matt,
> Have you used the <outofdate> target from ant-contrib? I'm not having 
> any luck. I have 0.6 (and even tried building it myself from the 
> sources).
> I have run the <stopwatch> task, so I know the library is being picked 
> up. I get this error when it hits my <outofdate> target.
>
> BUILD FAILED
> C:\view\dkavanag\1411_view\payx\inc\inc_comm.xml:115: 
> C:\view\dkavanag\1411_view
> \payx\payentry\dev\1.4 not found.
>
> Here is what my build.xml looks like (part of it anyway)
>
>    <outofdate verbose="true" property="doswap" 
> outputtargets="swap.classes">
>        <sourcefiles>
>            <fileset dir="${build.source}" includes="**/*.java"/>
>        </sourcefiles>
>        <mapper type="regexp" from="^(.*)\.java$$" 
> to="../${build.classes.dir}/\1.class"/>
>    </outofdate>
>
> Line 115 is that first line in the <outofdate> task.
>
> Any pointers would be great. I think I'm done with the <hotswap> task 
> itself... just like to test with the supporting cast...
>
> David
>
> Thus Spoke Matt Benson:
>
>> 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
>>  
>>
>



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


Mime
View raw message