| TImestamping in ANT | TImestamping in ANT 2007-07-26 - By Wascally Wabbit
Sorry, Incomplete original example methinks.
If you change - <assign var="time" value="now"/>
to + <assign var="time" op="-now" fromvar="time"/>
it should work.
--- [ A WORKING EXAMPLE TO DEMONSTRATE (TESTED ;-))] ----
Here's a working sample (assuming AntX is installed in a directory at ./antx relative to test script):
<project name="test" default="timed-target" basedir="."> <property name="jware.antx.defaults.valueuris.flag" value="yes"/> <path id="antx.classpath"> <pathelement location="${basedir}/antx/JWare_apis.jar"/> <pathelement location="${basedir}/antx/AntX_tasks.jar"/> </path>
<taskdef resource="com/idaremedia/antx/install/antlib.xml" classpathref="antx.classpath"/> <typedef resource="com/idaremedia/antx/valueuri/antlib.xml" classpathref="antx.classpath"/>
<target name="timed-target"> <assign var="time" op="now"/> <echo message="started @ ${$var:time} ms"/> <sleep seconds="2"/> <assign var="time" op="-now" fromvar="time"/> <echo message="duration was ${$var:time} ms"/> <copyproperty name="duration" variable="time" transform="duration"/> <echo message="Duration transformed is ${duration}"/> </target> </project>
OUTPUT: timed-target: [echo] started @ 1185500881950 ms [echo] duration was 2003 ms [echo] Duration transformed is 2sec.3ms
dkhanna01 wrote: > first of all thanks for the information > > I tried to load antx libraries and it did worked, BUT while calculating the > duration its giving me an error as : > > Unable to convert 'now' to time duration. > compile took -now > > Here is my code: > > <target name="usage" description="Displays a list of valid targets"> > <assign var="time" value="now"/> > <copyproperty name="usage.start" variable="time" > transform="datetime"/> > <echo level="info" message="usage started ${usage.start}"/> > > <antcall target="usage:default"/> > > <assign var="time" value="now"/> > <copyproperty name="compile.duration" variable="time" > transform="duration"/> > > <echo level="info" message="compile took ${compile.duration}"/> > </target> > > Is there any thing I have missed. > > THanks again > > > > > Wascally Wabbit wrote: >> Hi, >> >> The assign task is already defined for you as part of the >> AntXtras antlib. The easiest thing to do is to load the >> entire antlib and experiment. *See the Quick Start and >> User Guide for additional information*. >> >> Example (assuming at least Ant 1.6.5, and AntXtras bin download >> to some local directory '${antextensions.d}/antx'): >> >> [Top-Level] >> >> <path id="antx.classpath"> >> <fileset dir="${antextensions.d}/antx"> >> <include name="lib/*.jar"/> >> </fileset> >> </path> >> >> <taskdef resource="com/idaremedia/antx/install/antlib.xml" >> classpathref="antx.classpath"/> >> >> >> [In any target or macrodef] >> <assign var="duration" value="now"/> >> ... >> <assign var="duration" value="-now" .../> >> ... >> >> -The Wabbit >> >> >> dkhanna01 wrote: >>> Hi >>> I downloaded the antxtras unility from the site but the two jar files in >>> that does not contain class file for assign task. SO when I try to run my >>> script after adding assing task it gave an error that " Problem: failed >>> to >>> create task or type assign" >>> >>> THanks >>> >>> >>> Wascally Wabbit wrote: >>>> dkhanna01 wrote: >>>>> I need to find out the time taken by each of the process/target in our >>>>> build.xml file. Now for doing this I have use ANT tstamp task to >>>>> calculate >>>>> the start time and end time of the process. Now my question is how do I >>>>> find >>>>> out the total time taken by the process, I mean is there any way to >>>>> calculate difference between "End time" and "Start time" >>>>> >>>>> Thanks >>>> If you can use thirdparty libraries you can use the AntXtra's >>>> <assign> task like so: >>>> >>>> <target name="compile" depends="-init" description="Compile stuff"> >>>> <assign var="time" value="now"/> >>>> ...[all your compiling tasks here] >>>> <assign var="time" value="-now" transform="duration" >>>> copyproperty="compile.duration"/> >>>> <echo level="info" message="compile took ${compile.duration}"/> >>>> </target> >>>> >>>> If you want to do this for lots of your targets you can leverage >>>> macrodefs to do this for every target using something like: >>>> >>>> <macrodef name="timedtarget"> >>>> <attribute name="name"> >>>> <attribute name="functions"/> >>>> <sequential> >>>> <assign var="time_" value="now"/> >>>> <callinline targets="@{functions}"/> <!--do NOT switch projects--> >>>> <assign var="time_" value="-now" transform="duration" >>>> copyproperty="@{name}.duration"/> >>>> <echo level="info" message="@{name} took ${@{name}.duration}"/> >>>> </sequential> >>>> </macrodef> >>>> >>>> Then use it like so: >>>> >>>> <target name="-compile"> >>>> ...[all your compiling work here in private target] >>>> </target> >>>> >>>> <target name="compile" depends="-init" description="Compile stuff"> >>>> <timetarget name="compile" functions="-compile"/> >>>> </target> >>>> >>>> AntXtras is at: http://antxtras.sf.net/ >>>> >>>> Hope that helps. >>>> >>>> -The Wabbit >>>> >>>> --------------------------------------------------------------------- >>>> To unsubscribe, e-mail: user-unsubscribe@(protected) >>>> For additional commands, e-mail: user-help@(protected) >>>> >>>> >>>> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: user-unsubscribe@(protected) >> For additional commands, e-mail: user-help@(protected) >> >> >> >
--------------------------------------------------------------------- To unsubscribe, e-mail: user-unsubscribe@(protected) For additional commands, e-mail: user-help@(protected)
|
|
 |