24

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?

martin clayton
  • 76,436
  • 32
  • 213
  • 198
Nirmal Patel
  • 5,128
  • 8
  • 41
  • 52

4 Answers4

49

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)

martin clayton
  • 76,436
  • 32
  • 213
  • 198
8

Use one of the listeners from Ant add-on task collections:

Or check their sources, and roll your own listener.

Jayan
  • 18,003
  • 15
  • 89
  • 143
Rebse
  • 10,307
  • 2
  • 38
  • 66
3

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

Martin
  • 2,316
  • 1
  • 28
  • 33
1

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.

martin clayton
  • 76,436
  • 32
  • 213
  • 198
Tom Duckering
  • 2,727
  • 1
  • 23
  • 27