Решение для слушателя сборки, на которое указывает Ребсе, выглядит полезным (+1).
Альтернативой, которую вы могли бы рассмотреть, было бы «перегрузить» ваши цели, что-то вроде этого:
<project default="compile">
<target name="compile" depends="-compile, cleanUpLib"
description="compile and cleanup"/>
<target name="-compile">
<!--
your original compile target
-->
</target>
<target name="deploywar" depends="-deploywar, cleanUpLib"
description="deploywar and cleanup"/>
<target name="-deploywar">
<!--
your original deploywar target
-->
</target>
<target name="cleanUpLib">
</target>
</project>
Конечно, нельзя перегрузить один файл сборки Ant, поэтому имена целей должны отличаться.
(я использовал префикс "-" выше, который является хаком, чтобы сделать цели "частными" - т.е. вы не можете вызывать их из командной строки из-за обработки аргументов сценария оболочки. Но, конечно, вы все равно можете удвоить -выберите их успешно в Ant).