繁体   English   中英

Gradle - 导入GitHub存储库并使其成为子项目依赖项?

[英]Gradle - import GitHub repository and make it a subproject dependency?

我试图通过部署JAR文件依赖来避免多项目构建,但它确实破坏了我灵活的工作流程,我需要一种更快的方法来使我的GIT存储库动态地相互添加为依赖项。 我确信我可以使用JAR文件编写一些创造性的部署过程,但我喜欢对一个项目进行更改,以便在没有中间部署的情况下立即转向其他依赖项目。

我正在查看grgit文档,我发现它允许分支克隆操作。 但是,如何在克隆之后提取工作树并将其作为依赖项包含,假设repo本身有自己的gradle.build脚本?

repositories {
    mavenCentral()
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'

dependencies {
    compile group: 'com.google.guava', name: 'guava', version: '18.0'
    compile 'org.xerial:sqlite-jdbc:3.8.7'
    compile 'net.jcip:jcip-annotations:1.0'
    compile 'joda-time:joda-time:2.7'
    compile files('path/to/my/repo') //not quite sure what to do here??? 
}

task downloadGitDependency { 
    def grgit = Grgit.clone(dir: 'path/to/my/repo', uri: 'git@github.com:ajoberstar/grgit.git')
}
build.dependsOn downloadGitDependency

sourceSets {
    main.java.srcDir "src/main/java"
}

jar { 
    from configurations.compile.collect { entry -> zipTree(entry) }
}

如果子项目列表是(相当)静态的,并且每个子项目都有自己的build.gradle ,则可以将它们添加为git子模块。 在您的项目目录中,执行:

git submodule add git@github.com:ajoberstar/grgit.git path/to/my/repo
cd path/to/my/repo
git fetch

# then either (to switch to a different branch):
git checkout -b mybranch origin/mybranch

# or (to check out a particular ref on the current branch):
git checkout deadc0de

# or both of the above (to check out a particular ref on a different branch)

(注意:您在示例中使用的git URL会将grgit添加为子项目 - 除非这是您想要的,您可以在此处使用远程仓库的URL作为子项目.path path/tp/my/repo是一个任意路径在您的项目树中,将克隆子项目。)

然后,将子项目添加到主项目的构建配置中: importimport settings.gradle并将其定义为build.gradle的依赖build.gradle

Git会将主要模块的提交链接到子模块的特定提交。

但是,请注意,在git中使用子模块并非没有缺陷:不要提交子模块(总是提交上游),并确保每次HEAD更改时都运行git submodule update (拉,合并,检出等)。 )。 一篇关于git子模块陷阱的好文章: https//codingkilledthecat.wordpress.com/2012/04/28/why-your-company-shouldnt-use-git-submodules/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM