如何在多项目Gradle构建中指定通用模块版本



是否可以仅在根构建脚本中定义版本,以便所有子项目都使用相同的版本?但不要把模块拉到不使用这些模块的子项目中。

例如:root.build.gradle

com.company:module-A:version-A
com.company:module-B:version-B
com.company:module-C:version-C

子项目-1.build.gradle

com.company:module-A
com.company:module-B

子项目-2.build.gradle

com.company:module-A
com.company:module-C

构建后,只有模块A版本A和模块B版本B在子项目1的分布中,模块A版本-A和模块C版本C在子项目2的分布中。

两个解决方案不同之处在于,您可以掌握哪些子项目依赖于公共模块的信息。

解决方案1:
将通用版本存储在根项目中,然后使用它在子项目中声明依赖关系。

根项目:

ext {
commonModuleDependency = "com.company:module-A:version-A"
}

子项目:

dependencies {
compile rootProject.commonModuleDependency
}

解决方案2:从根项目配置子项目。在这种情况下,根项目知道哪些子项目具有共同的依赖关系。

根项目:

subprojects.findAll {
it.name in listOfSubprojectsThatHaveCommonModule
}.configure {
dependencies {
compile "com.company:module-A:version-A"
}
}

我建议你尝试第一种,因为它可以说更简单,耦合更少
我觉得你真的想首先解决在任何地方都没有相同依赖项的不同版本的问题,对吧?

最新更新