如何让 gradle 克隆一个 git 存储库(到当前存储库的子存储库)并将其构建为子项目?
目前我有以下内容:
设置.gradle:
include 'contrib/dependency/foolib'
build.gradle(缩短):
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.2'
classpath 'org.ajoberstar:gradle-git:0.7.0'
}
}
apply plugin: 'com.android.application'
import org.ajoberstar.grgit.*
task clone << {
File dir = new File('contrib/dependency')
if(!dir.exists()) {
def grgit = Grgit.clone(dir: dir, uri: 'https://github.com/someone/dependency.git', refToCheckout: 'dev')
}
def grgit = Grgit.open(dir)
grgit.checkout(branch: 'dev')
grgit.pull(rebase: false)
}
project.afterEvaluate {
preBuild.dependsOn clone
}
repositories {
mavenCentral()
}
dependencies {
compile project(':contrib/dependency/foolib')
}
android {
// nothing out of the ordinary here, omitting
}
子项目有自己的build.gradle
,可以自己构建。
我逐渐构建并测试了脚本,首先是克隆操作(效果很好)。当我第一次以完整的最终形式运行脚本时,由于之前的克隆操作,子存储库已经/仍然存在,并且构建顺利完成。
但是,当我通过简单地删除模拟新构建时contrib
,出现错误:
Cannot evaluate module contrib/dependency/foolib : Configuration with name 'default' not found.
显然,这是由对仍待导入的子项目的引用引起的。我该如何解决这个问题?