我如何在gradle获得当前的git分支?

我如何在gradle获得当前的git分支?,git,gradle,Git,Gradle,我正在编写一个任务来将我的应用程序部署到服务器。但是,我希望仅当我当前的git分支是主分支时才运行此任务。 如何获取当前git分支 gradlegit方法: 我知道在任务GitBranchList下有一个方法getWorkingBranch(),但只要我尝试执行 task getBranchName(type: GitBranchList) { print getWorkingBranch().name } 我得到一个“任务尚未执行”错误。我查看了,当没有分支集时,它会抛出该错误。这是否

我正在编写一个任务来将我的应用程序部署到服务器。但是,我希望仅当我当前的git分支是主分支时才运行此任务。 如何获取当前git分支

gradlegit
方法: 我知道在任务
GitBranchList
下有一个方法
getWorkingBranch()
,但只要我尝试执行

task getBranchName(type: GitBranchList) {
   print getWorkingBranch().name
}

我得到一个“任务尚未执行”错误。我查看了,当没有分支集时,它会抛出该错误。这是否意味着这种方法没有达到我认为的效果?是否需要在某个位置设置分支?

否这并不意味着未设置分支。这意味着任务还没有真正执行。您试图做的是在配置闭包中调用一个方法,而您可能希望在任务执行后调用它。尝试将任务更改为:

task getBranchName(type: GitBranchList) << {
    print getWorkingBranch().name
}

task getBranchName(type:GitBranchList)您也可以在不使用插件的情况下获取
git分支名称

def gitBranch() {
    def branch = ""
    def proc = "git rev-parse --abbrev-ref HEAD".execute()
    proc.in.eachLine { line -> branch = line }
    proc.err.eachLine { line -> println line }
    proc.waitFor()
    branch
}

请参阅:

这可能是给定的,但应注意,许多CI引擎以分离状态签出最新提交,而不是主或命名分支。在这种情况下,此解决方案将返回HEAD,而不是分支名称。