У меня был тот же вопрос (и нашел те же результаты), но я также нашел обходной путь. Позвольте мне проиллюстрировать это примером.
У вас есть ProjectFile.build и CommonFile.build. Допустим, вы хотите перезаписать цель под названием «Очистить».
Вам потребуется создать новый файл (назовите его CommonFile_Clean.build), который содержит:
<?xml version="1.0"?>
<project>
<target name="Clean">
<echo message="Do clean stuff here" />
</target>
</project>
В CommonFile.build вы условно включаете CommonFile_Clean.build:
.
<?xml version="1.0"?>
<project>
<echo message="checking Clean definition..." />
<if test="${not target::exists('Clean')}">
<echo message="Clean target not defined." />
<include buildfile="CommonFile_Clean.build" />
</if>
</project>
В ProjectFile.build вы можете определить цель Clean (в этом случае CommonFile_Clean.build не будет использоваться) или использовать реализацию по умолчанию, как определено в CommonFile_Clean.build.
Конечно, если у вас большое количество целей, это будет довольно трудоемко.
Надеюсь, это поможет.