如何在gradle中只发布构建脚本?

ttvkxqim  于 2022-12-19  发布在  其他
关注(0)|答案(1)|浏览(159)

我想发布一个通用的构建脚本,我将包括在我的应用程序中的各种项目。
这将只包含一组公共的依赖项,即与特定版本的依赖项,这些依赖项将在我的企业应用程序中的所有工件中是公共的。
我的应用程序将从url引用此文件。
我怎样才能做到这一点?
EDIT1:我在这个方向的探索是基于对SO的这个回答:How to share a common build.gradle via a repository?

pqwbnv8z

pqwbnv8z1#

有几个不同的选择。

  • 一种方法是发布一个项目,将您想要共享的依赖项定义为API依赖项,依赖于此的项目将继承依赖项。
  • 或者,您可以编写并发布一个Gradle插件,该插件将使用常见依赖项配置您的项目。项目可以应用该插件,并将自动以某种方式进行配置。(您无需发布插件即可完成此操作-请先尝试创建项目本地buildSrc约定插件。

我实际上不会推荐这两种方法。

  • 当传递性依赖被继承时,很容易陷入依赖地狱的混乱网络中。很可能在某个时候,一些依赖会发生冲突,排除依赖可能是一个“大”头痛问题,并且很容易抵消试图减少一点重复的任何好处。
  • 另外,当一个项目明确地显示它的依赖关系时,这是很好的。能够查看build.gradle.kts并确切地理解设置了什么依赖关系是非常方便的。

相反,我建议在一个中心位置控制公共依赖项的 * 版本 *。这可以通过Java平台插件实现。该插件可以应用于单个build.gradle.kts文件,它列出了所有可能依赖项的所有版本。(它还可以导入现有的Maven BOM,如Sping Boot BOM)。
现在,所有子项目都可以在“Java平台”项目上添加平台依赖项。

dependencies {
  // import the platform from a Maven repo
  implementation(platform("my.company:my-shared-platform:1.2.3"))

  // or import a platform from a local project
  implementation(platform(":my-project:version-platform"))

  // no need to define a version, if it's defined in the platform
  implementation("com.fasterxml.jackson.core:jackson-databind")
}

这是两全其美的做法,项目可以明确其依赖关系,保持自主性,而版本可以跨独立项目进行调整。

相关问题