Лучший способ интегрировать Git с Ant?
Я ищу лучший способ интеграции Git с Ant. Существует ли широко используемая задача Ant для Git? У кого-нибудь есть опыт использования Git через Ant (например, выделенная задача, вызов exec и т. Д.)?
7 ответов
Не похоже, что для Git был набор задач Ant.
Этот блог рассказывает о некоторых элементарных задачах для работы с Git.
Ant поддерживает команду exec, которую вы можете использовать для передачи любой команды (включая Git) в командную строку для выполнения. Вы всегда можете вернуться к этому.
Вот Git Ant Tasks через JGit: http://aniszczyk.org/2011/05/12/git-ant-tasks-via-jgit/.
Посмотрите на JGit-Ant. К сожалению, проект jgit-ant tasks не имеет всех основных действий git, дополнительную информацию вы можете найти здесь.
Для разработчиков Java: вы можете легко написать git-ant-команды самостоятельно, используя jgit, как в этих примерах.
Похоже, что была сделана дополнительная неофициальная работа над задачами Ant для git:
- http://github.com/newtriks/Ant-Funk (и сообщение в блоге http://www.newtriks.com/?p=910)
- http://github.com/FrancisVarga/ant-git-macros
У меня нет опыта с ними, но они кажутся более плотными, чем у Тлробинсона.
Используйте комбинацию библиотеки JGit с некоторыми <script language="javascript">
код (я использовал Rhino lubrary, но вы также можете использовать Groovy и т. д.).
Некоторое время назад я безуспешно искал готовые к использованию способы интеграции 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 (или hnumber коммита), например build/TARGET-${git-branch-name}
,