我正在开发一个拥有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小时。
这是我们可以通过增量构建支持实现的吗?