Gradle - 具有动态依赖关系的单个build.gradle

时间:2014-05-25 17:14:06

标签: gradle build.gradle

所以我们有一个巨大的多项目代码库,结构如下:

C:\Eclipse\Workspace->
                    AR
                    DC
                    CI
                    ..
                    ..

每个项目都有一个build.gradle文件,其中80%的代码相同,只有所有项目的依赖项部分都在变化。

  

我想要实现的目标:

我想创建一个名为“BuildAllProjects”的父项目,它将是具有build.gradle,settings.gradle和gradle.properties的 ONLY 项目,并建议有一个属性文件来提及依赖项每个项目,如:

AR=j2ee,commons-lang,FW,DA,Common
DC=commons-codec,FW,DA,Common,spring-core

然后使用gradle expand []属性动态填充我正在构建的项目的依赖项,例如,如果我正在构建AR,我可能想要运行:

gradle -PAR build

将从属性中读取“AR”的依赖关系,并以以下格式展开:

dependencies {
   compile name 'j2ee'
   compile name 'commons-lang'
}

你们认为这是可能的还是这是实现它的最糟糕方式?我是GRADLE的新手,上面提供的信息是基于我在几周内获得的知识。请提供您的建议,以实现最佳的gradle。

谢谢, Yogendra

1 个答案:

答案 0 :(得分:0)

在Gradle的构建语言之上分层基于属性文件的构建语言并不会让我感到满意。相反,我建议专注于编写干净和DRY Gradle构建脚本。您可以在Gradle User Guide中了解有关Gradle强大的抽象功能(配置注入,脚本插件,buildSrc,自定义插件和扩展等)的更多信息。

在典型的多项目构建中,子项目构建脚本主要包含依赖性声明,而大多数其他配置发生在根构建脚本和/或脚本插件中。