Printing Ant target execution time
I want to print the execution time taken for each individual Ant target and its dependent targets.
<target name="target1" depends="target2, target3">
....
</target>
When run should show following output
Target 2 - x seconds
Target 3 - y seconds
Target 1 - z seconds
Any suggestions on how to achieve this开发者_如何学JAVA?
Since Ant 1.8.0 you can use a profilelogger to do this.
ant -logger org.apache.tools.ant.listener.ProfileLogger target
Produces output like
Target aTarget: started Thu Jan 22 09:01:00 CET 2009
echo: started Thu Jan 22 09:01:00 CET 2009 [echo] echo-task
echo: finishedThu Jan 22 09:01:00 CET 2009 (250ms)
zip: started Thu Jan 22 09:01:00 CET 2009 [zip] Building zip: ...\my.zip
zip: finishedThu Jan 22 09:01:01 CET 2009 (1313ms)
Target aTarget: finishedThu Jan 22 09:01:01 CET 2009 (1719ms)
Use one of the listeners from Ant add-on task collections:
- antutility
- antelope
- antcontrib
With
-listener net.sf.antcontrib.perf.AntPerformanceListener
Or check their sources, and roll your own listener.
If you're using ant-contrib, then there is a stopwatch task. Put it at the top and bottom of each target and it will report the elapsed and total times.
http://ant-contrib.sourceforge.net/tasks/tasks/index.html
There is the TStamp
task that you can use to demark your other tasks.
See here: http://ant.apache.org/manual/Tasks/tstamp.html
There is some extension/addon that will do it all for you without having to do this. Will scrabble around for it if no-one comes up with it first.
精彩评论