我试图通过部署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) }
}
答案 0 :(得分:0)
如果子项目列表是(相当)静态且每个子项目都有自己的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/tp/my/repo
是任意的项目树中要克隆子项目的路径。)
然后,将您的子项目添加到主项目的构建配置:import
settings.gradle
中,并将其定义为build.gradle
中的依赖项。
Git会将主要模块的提交链接到子模块的特定提交。
但是,请注意,在git中使用子模块并非没有缺陷:不要提交子模块(总是提交上游),并确保每次HEAD更改时运行git submodule update
(拉,合并,结账等)。关于git子模块陷阱的一篇好文章:https://codingkilledthecat.wordpress.com/2012/04/28/why-your-company-shouldnt-use-git-submodules/