Самый простой способ сделать это - изменить проблему. Вместо того чтобы делать сборку Any, сделайте это за вас, пусть любой процесс, который вы вызываете Ant, вычислит, каким должен быть номер версии, а затем передаст его как свойство, например,
ant -Dbuild.version = 1.2.3
Это дает гибкость любой сборке, с которой вы работаете, и может отследить любую, например, ревизию SVN, текущую дату и время или что угодно.
ant -Dbuild.version = svnversion .
ant -Dbuild.version = date +"%Y%m%d%H%D"
ant -Dbuild.version = $ {major}. svnversion .
. date +"%Y%m%d%H%D"
и т.д.. Вы можете получить достаточно всеобъемлющий, если хотите.
Если вы хотите иметь постоянно увеличивающееся число, вы можете сохранить его в файле, а затем передать его во время компиляции. Например, вы можете сделать:
VER = cat build.version
VER = $ ((VER + 1))
echo $ VER> build.version
Наконец, если вы действительно хотите, чтобы это было в файле build.xml, лучше всего выполнить отдельную задачу для выполнения опции increment-and-build и разветвить вложенную сборку ant с помощью вашего 'main' цель. Таким образом, вы получите
ant -> ant -Dbuild.version = 1.2.3.4 -> ...
Другими словами, учитывая ваш build.xml с (текущим) значением по умолчанию 'build', затем измените его на 'version' и попросите, чтобы задача 'ant' version выполнила вычисление с последующим вложенным вызовом и build.
Реализация оставлена читателю как упражнение, как и перевод подхода на не-UNIX платформу.