Перенаправление цели в Ant

Есть ли возможность буквально переопределить цель или как-то подражать ей?

Поэтому, когда я звоню

<target perform-after="release"> <do-something /> </target> 

Он будет действовать следующим образом:

 <target name="release"> <antcall target="release" /> <!-- call previous version, not recursion --> <do-something /> </target> 

Я думаю, что это имеет смысл, я опишу пример Android:

У нас есть шаблоны .xml для каждого build.xml в папке SDK ( {$SDK}/tools/ant/*.xml ), эти файлы включены в каждый сгенерированный файл build.xml для каждого проекта. Есть только -pre-compile , -pre-build и -post-compile цели, которые пустые и легко переопределить. Но, например, нет пустой цели -post-release . Google рекомендует в созданных комментариях build.xml просто скопировать-вставить цель в мой собственный build.xml и затем настроить ее. Но я думаю, что это не нормально, потому что, если Google что-то изменит в этой цели внутри шаблона, я никогда не узнаю, что использую устаревшую версию.

Solutions Collecting From Web of "Перенаправление цели в Ant"

См. Раздел «Целевое переопределение» задачи импорта или раздел «Целевое переписывание» задачи включения . Короче говоря, дайте common build.xml имя проекта, например «common», а затем используйте «common.release» в antcall.

Отмечу, что antcall не совсем то же самое, так как он запускает новый проект во время выполнения, что означает, что переменные, заданные целевым объектом, не будут отображаться позже. У меня нет Ant на этой машине для тестирования, но вы можете попробовать что-то подобное, чтобы избежать antcall:

 <target name="release" depends="common.release, -post-release"/>