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