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 <[EMAIL PROTECTED]> 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
--- [EMAIL PROTECTED] 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 <[EMAIL PROTECTED]>:
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
--- [EMAIL PROTECTED] 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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]