使用Grgit在我的gradle上克隆git存储库

时间:2017-07-24 08:30:42

标签: java git svn gradle

我有一个运行脚本的gradle项目,在其中的某个地方,我需要克隆一个git存储库。 我之前用svn运行了它,但是我将公司SCM更改为gitlab,我需要更改代码,以便它现在克隆来自git的repo。

我需要一些类似于这个SVN代码的东西:

task exportLibs(type: SvnExport) {
  svnUrl = "http://<svn-url>"
  targetDir = "<target-dir-to-download-files>"
}

所以我读到了Grgit,但是网上没有一个例子,如何做一个简单的git克隆(只有这个链接http://ajoberstar.org/grgit/docs/groovydoc/org/ajoberstar/grgit/operation/CloneOp.html)。如果有人可以帮助我解决这个问题,或者可能让我参与他的grgit项目,那么我将从中学习,这将是非常棒的!

- 编辑 -

当我尝试使用如下的grgit时:

group 'test'
version '1.0-SNAPSHOT'

buildscript {
    repositories {
        maven {
             url "https://plugins.gradle.org/m2/"
        }
    }
    dependencies {
        classpath "org.ajoberstar:gradle-git:1.7.2"
    }
}

apply plugin: 'java'
apply plugin: 'org.ajoberstar.grgit'



org.ajoberstar.grgit.auth.hardcoded.allow=true
task pullFromGit{
    doLast {
        //grgit.pull()
    }
}


sourceCompatibility = 1.8

repositories {
     mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

我已经使用此属性来初始化它,并且我收到以下错误:

  

评估根项目'grgit'时出现问题。

     

无法为org.gradle.api.Project类型的根项目'grgit'获取未知属性'org'。

2 个答案:

答案 0 :(得分:2)

项目的github页面上有some examples and the API documentation的链接。以下代码片段可以解决您的问题(在这种情况下,它会将grgit项目克隆到echo目录)

grgit

回答编辑过的问题

documentation表示buildscript { repositories { mavenCentral() } dependencies { classpath 'org.ajoberstar:grgit:1.7.2' } } task hello { doLast { org.ajoberstar.grgit.Grgit.clone(dir: 'grgit', uri: 'https://github.com/ajoberstar/grgit.git') } } 是系统属性。您的赋值不是设置系统属性的有效方法,有关在groovy中设置系统属性的示例,请参阅this question的答案。

答案 1 :(得分:0)

我的代码可能在其中有一些特殊的导入,导致最终我唯一可以完成的克隆就是shell exec。 问题解决了,但不是我的错误......