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

时间:2020-01-02 15:32:11

标签: java git gradle kotlin

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

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

但是,我不确定如何声明所有项目共有的依赖项。该项目现在很小又足够灵活

  • 我希望整个组织使用一个Kotlin版本
  • 微服务之间所有共享框架的相同版本(相同版本的Ktor,相同的Exposed,相同的所有内容)

因此,不同步的代价实际上要比保持同步更大(因为我们现在很小)。

这是一个示例依赖项块:

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

现在,我想在多个项目之间共享它。我想更新一次,例如在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"

这样我的依赖项块在两个项目中都像这样

dependencies {
    commonDependencies()
    // .. microservice specific dependencies
}

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

  • 我只想继续使用git子模块,因为我发现这比管理从Maven存储库中推入/拉出或管理JAR及其附带的所有操作要快得多。如果有人知道更好的方法,很高兴改变我的看法:)

0 个答案:

没有答案