... is to produce all of your output (classes, tests...) in a new "build" directory. This way you can just delete this directory to implement your clean target.
To the most extent, you would copy your sources in it, then compile them here, just to make consistent "dist" target if you want to distribute the sources also...
I've seen horrible things in some "clean" targets where the guy tries to identifies all of its project output (some classes here, other there...), while it is so easy to centralise all in a single specific directory, like this for instance :
+- ant.output <- your output dir !
+- src.classes (maybe resources have been copied inside...)
And voila the clean target : <delete dir="ant.output"/>
Just my personal best practice :)