如何根据gradle multi模块项目中的提交确定需要构建的内容?

时间:2017-05-24 17:34:06

标签: gradle build.gradle gradlew gradle-3.0

我正在开发一个拥有700多个模块的项目,我们有gradle构建工具来构建这个项目。我们在Bamboo中为这个项目设置了CI。所以基本上这是多模块项目,来自Bamboo CI至少需要2个小时或2个多小时来构建整个项目。我们有什么方法可以只构建那些实际更改的模块。我知道一件事情 gradle是

gradle -a build

例如如果我们有一个具有以下模块结构的项目,其中每个模块依赖于它上面的模块。因此,模块服务依赖于通用,而模块Web依赖于服务:

.
├── common
├── services
└── web

当我们想要构建服务模块时,我们转到services目录并执行构建任务,然后它将执行服务构建以及依赖构建公共但是如果我使用-a-no-rebuild告诉Gradle跳过项目依赖项的选项,它只构建服务构建,如下面的输出

$ gradle -a build
:services:compileJava
:services:processResources
:services:classes
:services:jar
:services:assemble
:services:compileTestJava
:services:processTestResources
:services:testClasses
:services:test
:services:check
:services:build

这就是我在本地做的事情,我知道普通模块没有变化,但是我将在我的CI工具(Bamboo)中设置这些东西。如果没有变化我怎么能实现这一点在这个模块中,没有必要构建它或跳过并转到其他模块,如果源代码有变化,那么构建它。

我认为我们需要确保以下步骤

  • 确定特定模块的源代码是否已更改。
  • 如果更改,则构建模块并构建模块 依赖。

有人可以告诉我实现这一目标的方法吗?这样可以节省CI的时间,因为目前只需要构建时间超过2小时。

这是我们可以通过增量构建支持实现的吗?

0 个答案:

没有答案