Android Studio - задача Gradle выдает StackruError при привязке к preBuild
У меня есть задача на моем Android build.gradle, которая должна загружать исходный код из моего репозитория git в определенный каталог, если его там нет, и извлекать его в определенную ветку после клонирования (если репозиторий уже клонирован, сделать выборку, а затем оформить заказ). Я использую GrGit версии 1.6.0.
Вот код для моей задачи:
task downloadRepoSrc << {
def branch = "development"
def pathToClone = "path/to/clone/"
def uriToRepo = "git@restofurihere"
try {
// Try to open repository if it exists
def grgit = Grgit.open(dir: pathToClone)
grgit.fetch()
if (grgit.branch.list().find {it.name == branch}) {
grgit.checkout(branch: branch)
} else {
grgit.checkout(branch: branch, startPoint: "origin/$branch", createBranch: true)
}
} catch (RepositoryNotFoundException ignored) {
// Repository not found. Try to clone it.
def grgit = Grgit.clone(dir: pathToClone, uri: "uriToRepo")
grgit.checkout(branch: branch, startPoint: "origin/$branch", createBranch: true)
} catch (Exception e) {
e.printStackTrace()
}
}
Я также связываю задачу с задачей preBuild, чтобы она запускалась при каждой сборке проекта, например так:
preBuild.dependsOn downloadRepoSrc
Всякий раз, когда я запускаю задачу вручную на интерфейсе студии Android, она выполняется безупречно. Однако всякий раз, когда я пытаюсь построить проект, я получаю следующее сообщение об ошибке:
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':native-myproject:downloadRepoSrc'.
> java.lang.StackruError (no error message)
Я не понимаю, почему задача не будет выполнена при создании проекта, а не при запуске вручную. Моя цель состоит в том, чтобы сделать процесс сборки для проекта зависимостей автоматическим, при условии, что я передаю ему правильную ветку / тег для извлечения на git. В настоящее время мне нужно помнить, чтобы вручную запускать задачу каждый раз, когда я хочу использовать другую ветку / тег, которая работает, но не оптимальна.
Любая помощь или советы о том, что может быть не так, будет принята с благодарностью. Если вам нужно больше деталей, пожалуйста, дайте мне знать.
РЕДАКТИРОВАТЬ: Вот трассировка стека, выводимая при запуске gradle с параметром --stacktrace. Я свяжу это в пастбине, так как это довольно долго. Похоже, что он входит в бесконечную рекурсию для функции resolBranch, но только при сборке проекта, а не при запуске задачи вручную.