有没有一种方法可以强制gradle一次只为一个项目编译c ++代码(并且只有它)?

时间:2019-08-06 11:13:13

标签: c++ jenkins gradle pipeline

我们有几个独立的项目,通过jenkins管道使用gradle构建,并作为gradle工作的一部分编译了一些c ++代码。我们使用vc17。
 通过将它们并行构建在一起,有时会遇到损坏的文件的相关问题(常常被忽略)。

 是否有一种方法可以强制一次只执行1个gradle作业的c ++代码编译?
最好尽快完成,即不为该特定代码减少工人或线程或其他资源编译。

PS:我知道我可以在运行其他jenkins版本时阻止某些jenkins版本,但这远非最佳选择-每个jenkins工作在1-2个小时内完成,gradle仅占用其中的2/3,其中大约2/3倍依次进行c ++代码编译

1 个答案:

答案 0 :(得分:0)

是的,您可以这样做。在Gradle中构建依赖项结构,其中项目通过dependsOn进行引用。 (正如@Botje指出的-您的项目似乎并不独立。)

假设您有一个projectA,这取决于先前完成的projectB编译。您还有一个projectC,它取决于projectAprojectB的顺序是B> A> C。

您可以通过在Gradle中声明C的编译任务来使C的编译依赖于A,B:

dependsOn( projectACompilationTask )
dependsOn( projectBCompilationTask )

要确保A,B的正确顺序,您可以为projectCCompilationTask进行定义:

tasks.findByName('projectACompilationTask').mustRunAfter 'projectBCompilationTask'

您还必须定义我在这里描述的编译任务。例如,您可以使用任务来触发CMake或当前用于初始化编译的任何东西。