Java Gradle:如何执行git拉过Gradle?

Java Gradle:如何执行git拉过Gradle?,java,git,build,gradle,Java,Git,Build,Gradle,我想在编译开始之前从git repo中提取更改。 我发现了这个,但它克隆了回购协议,而不是仅仅获取更改。 如果git服务器不在本地网络上,或者如果repo很大,这可能会很耗时 我找不到如何使用gradle或。执行git pull以下gradle脚本应该会有所帮助: import org.ajoberstar.grgit.* buildscript { repositories { mavenCentral() } dependencies { c

我想在编译开始之前从git repo中提取更改。 我发现了这个,但它克隆了回购协议,而不是仅仅获取更改。 如果git服务器不在本地网络上,或者如果repo很大,这可能会很耗时


我找不到如何使用gradle或。

执行git pull
以下gradle脚本应该会有所帮助:

import org.ajoberstar.grgit.*

buildscript {
   repositories { 
      mavenCentral() 
   }
   dependencies { 
      classpath 'org.ajoberstar:gradle-git:1.1.0' 
   }
}

task pull << {
   def grgit = Grgit.open(dir: project.file('.'))
   grgit.pull(rebase: false)
}
import org.ajoberstar.grgit*
构建脚本{
存储库{
mavenCentral()
}
依赖项{
类路径'org.ajoberstar:gradle git:1.1.0'
}
}

任务拉动您可以创建
Exec
任务并运行任何shell/cmd命令。简单任务不需要额外的插件依赖项

task gitPull(type: Exec) {
    description 'Pulls git.'
    commandLine "git", "pull"
}
用法:
gradlew gitPull

您应该看到这样的smth:

gradlew gitPull 
Parallel execution is an incubating feature.
:app:gitPull 
Already up-to-date.

BUILD SUCCESSFUL

Total time: 9.232 secs

其中
已经是最新的。
是来自
git pull
命令的输出。

由于我对gradle的知识有限,我选择了“Exec”方式,因为我无法将您的代码片段集成到我的脚本中。另外,在看过exec示例之后,我不认为使用外部库有什么意义。但是谢谢您的回答。@Dojo插件可以更高效(加载和运行插件比加载和运行另一个可执行文件更快,尤其是在Windows上),并且它可以直接返回值(而不必对其进行编码,打印到标准输出,调用方必须捕获和解析输出)。与简单用例无关,但随着需求的增长,用例可能变得更加复杂。