按顺序从包含的gradle构建运行任务

按顺序从包含的gradle构建运行任务,gradle,Gradle,我有一个gradle复合构建项目,它从一个数据库运行任务。我无法对包含的生成进行更改 对于某个任务,我想首先清理包含的构建,然后构建它。也就是说,我想做(松散地): 其中一些项目是包含的构建。我尝试通过设置依赖于这些外部任务的任务来实现这一点: task cleanIncludedBuild { dependsOn gradle.includedBuild("some-project").task("clean") } task buildIncludedBuild { dep

我有一个gradle复合构建项目,它从一个数据库运行任务。我无法对包含的生成进行更改

对于某个任务,我想首先清理包含的构建,然后构建它。也就是说,我想做(松散地):

其中
一些项目
是包含的构建。我尝试通过设置依赖于这些外部任务的任务来实现这一点:

task cleanIncludedBuild {
    dependsOn gradle.includedBuild("some-project").task("clean")
}

task buildIncludedBuild {
    dependsOn cleanIncludedBuild
    dependsOn gradle.includedBuild("some-project").task("build")
}
但是,由于依赖项之间没有排序,因此此执行顺序有效,声明如下:

some-project:build
some-project:clean
cleanIncludedBuild
buildIncludedBuild
当然这不是我想要的

我想做一些类似的事情

gradle.includedBuild("some-project").task("build").dependsOn cleanIncludedBuild

但是上面的
task()
返回的值属于
IncludedBuildTaskReference
类型,它本质上是对底层任务的只读引用,不允许添加依赖项。

我想这是不可能的,也许你应该在Gradle论坛或问题跟踪器中对此进行描述,因此,它可以被考虑用于未来。也许为了提高性能,您可以使
clean->otherclean
build->otherbuild
build.should在clean
cleanBuild->clean,build
之后运行。我想在清理之前仍然可能会运行构建,但也许您至少可以增加概率。或者您确实修改了包含的构建,但没有更改其文件。您可以随时使用初始化脚本,例如。G在
~/.gradle/init.d/
或通过
-i
执行类似
的操作,如果(rootProject.name=='which')build.dependsOn clean
。当然,这只是伪代码,真正的代码还需要几行。我想这是不可能的,也许你应该在Gradle论坛或问题追踪器上写下这一点,这样以后就可以考虑了。也许为了提高性能,您可以使
clean->otherclean
build->otherbuild
build.should在clean
cleanBuild->clean,build
之后运行。我想在清理之前仍然可能会运行构建,但也许您至少可以增加概率。或者您确实修改了包含的构建,但没有更改其文件。您可以随时使用初始化脚本,例如。G在
~/.gradle/init.d/
或通过
-i
执行类似
的操作,如果(rootProject.name=='which')build.dependsOn clean
。这只是伪代码,当然,真正的代码还需要几行。
gradle.includedBuild("some-project").task("build").dependsOn cleanIncludedBuild