Gradle 任务依赖顺序
Gradle task dependency order
我的自定义 gradle 任务有问题:我想复制我的 android jar 库并在执行 'clean build' 后重命名它
这是我的定义:
task('CreateJar', type: Copy, dependsOn: [':mylibmodule:clean', ':mylibmodule:build']){
doLast {
from('build/intermediates/bundles/release/')
into('libs')
include('classes.jar')
rename('classes.jar', 'MyLib.jar')
}
}
问题是在 gradle 日志结果中,'clean' 在 'build' 任务之后完成,因此永远不会将库复制到目标文件夹:
...
:mylibmodule:testReleaseUnitTest
:mylibmodule:test
:mylibmodule:check
:mylibmodule:build
:mylibmodule:clean
:mylibmodule:CreateJar NO-SOURCE
我也曾尝试更改 'dependsOn:[]' 中的任务顺序,但它并没有改变任何东西...有人知道我的错误在哪里吗?
提前致谢
dependsOn
列表不强加任何顺序保证。通常,如果没有其他关系实际施加顺序保证,则首先列出的将首先执行。
(一个例子是,如果 clean
依赖于 build
,那么在 dependsOn
属性中如何定义它并不重要,因为 build
将始终在 clean
之前是 运行。我很清楚事实并非如此,因此在括号中,只是为了澄清我的意思。)
要确定为什么最终 build
在 clean
之前是 运行 我不能在没有看到完整的构建脚本的情况下说。根据您发布的内容无法确定。
也许您想要的是 clean.shouldRunAfter build
或 clean.mustRunAfter build
,它定义了一个排序约束而不添加依赖项。因此,您可以单独 运行 每个任务,但如果两者都是 运行,那么它们的顺序将按照您指定的方式定义。这两者之间的区别仅在并行任务执行时才有意义,然后应该 运行 after 意味着它们可以 运行 并行 iirc,必须 运行 after 不允许这样做。
我的自定义 gradle 任务有问题:我想复制我的 android jar 库并在执行 'clean build' 后重命名它 这是我的定义:
task('CreateJar', type: Copy, dependsOn: [':mylibmodule:clean', ':mylibmodule:build']){
doLast {
from('build/intermediates/bundles/release/')
into('libs')
include('classes.jar')
rename('classes.jar', 'MyLib.jar')
}
}
问题是在 gradle 日志结果中,'clean' 在 'build' 任务之后完成,因此永远不会将库复制到目标文件夹:
...
:mylibmodule:testReleaseUnitTest
:mylibmodule:test
:mylibmodule:check
:mylibmodule:build
:mylibmodule:clean
:mylibmodule:CreateJar NO-SOURCE
我也曾尝试更改 'dependsOn:[]' 中的任务顺序,但它并没有改变任何东西...有人知道我的错误在哪里吗? 提前致谢
dependsOn
列表不强加任何顺序保证。通常,如果没有其他关系实际施加顺序保证,则首先列出的将首先执行。
(一个例子是,如果 clean
依赖于 build
,那么在 dependsOn
属性中如何定义它并不重要,因为 build
将始终在 clean
之前是 运行。我很清楚事实并非如此,因此在括号中,只是为了澄清我的意思。)
要确定为什么最终 build
在 clean
之前是 运行 我不能在没有看到完整的构建脚本的情况下说。根据您发布的内容无法确定。
也许您想要的是 clean.shouldRunAfter build
或 clean.mustRunAfter build
,它定义了一个排序约束而不添加依赖项。因此,您可以单独 运行 每个任务,但如果两者都是 运行,那么它们的顺序将按照您指定的方式定义。这两者之间的区别仅在并行任务执行时才有意义,然后应该 运行 after 意味着它们可以 运行 并行 iirc,必须 运行 after 不允许这样做。