Время назад я безуспешно искал готовые к использованию способы интеграции Git и Ant. Мне нужна была возможность создать сборку с именем ветки Git. Наконец я пришел к следующему решению:
Выдержка из настоящего build.xml
файла:
<target name="-check-git-branch-name"
if="using.git"
>
<exec executable="bash" logError="true" failonerror="true"
outputproperty="git-branch-name">
<arg value="./bin/git-branch-name.sh" />
</exec>
</target>
Все содержимое файла ./bin/git-branch-name.sh
#!/bin/bash
# This script is the part of integration GIT to ANT. Once launched it
# should return the name of the current branch or the current commit (if
# GIT is the detached HEAD mode). Further the printed name is appended to
# the name of the resulting directory. To initialize this feature you need
# to run ANT with the option "-Dusing.git=".
exec 2>/dev/null
git rev-parse --abbrev-ref HEAD | grep -v HEAD || git rev-parse HEAD
Вызов похож на:
ant TARGET options -Dusing.git=
Когда объявляется ${using.git}
, Ant вызывает задачу -check-git-branch-name
, чтобы собрать имя ветви (или номер коммита, если Git находится в отдельном режиме), и генерирует сборку с добавленным именем ветви Git (или номер коммита), например build/TARGET-${git-branch-name}
.