如何在多个gradle项目之间共享公共依赖关系?

Adi*_*and 5 java git gradle kotlin

我有两个用 Kotlin 编写的微服务,它们共享大量代码和依赖项。

为了共享代码,我有一个 git 子模块存储库设置,它本质上是我所有微服务通用的包。我可以在 IDE 中打开一个微服务,将通用代码推送到 git 子模块,然后打开另一个项目,然后简单地拉取,我的常见更改也会出现在该项目中。

但是,我不确定如何声明所有项目通用的依赖项。这个项目很小而且足够灵活,现在

  • 我希望整个组织都使用同一个 kotlin 版本
  • 微服务之间所有共享框架的版本相同(相同版本的 Ktor、相同的 Exposited、相同的一切)

因此,不同步的成本实际上会比保持同步的成本更大(因为我们现在还很小)。

这是一个示例依赖块:

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
    compile "ch.qos.logback:logback-classic:$logback_version"
}
Run Code Online (Sandbox Code Playgroud)

现在我想在多个项目之间共享这个。我想更新一次,比如在下面的文件中coreModule/dependencies.gradle,并在所有项目中一次性更新它(例如:在核心模块本身中使用通用的 gradle 文件)

我想分享以下几行

    implementation fileTree(dir: 'libs', include: ['*.jar'])
    compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
    compile "ch.qos.logback:logback-classic:$logback_version"
Run Code Online (Sandbox Code Playgroud)

这样我的依赖项块在两个项目中看起来都是这样的

dependencies {
    commonDependencies()
    // .. microservice specific dependencies
}
Run Code Online (Sandbox Code Playgroud)

我需要帮助的是定义 commonDependencies 块,以便它可以在两个项目的依赖项块中使用。任何想法将不胜感激。

  • 我想继续只使用 git 子模块,因为我发现这比管理从 Maven 存储库推/拉的麻烦或管理 JAR 及其附带的所有内容要快得多。如果有人知道更好的方法,我很乐意改变我的观点:)