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

时间:2018-11-29 03:03:27

标签: gradle

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

例如: root.build.gradle

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

sub-project-1.build.gradle

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

sub-project-2.build.gradle

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

构建后,只有模块A.version-A和模块B.version-B在子项目1的分发中,而模块A.version-A和module-C.version-C是在子项目2的分配中。

1 个答案:

答案 0 :(得分:0)

两个解决方案,它们在什么地方保存哪些子项目取决于公共模块的信息不同。

解决方案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"
    }
}

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