gpt4 book ai didi

Gradle 任务依赖顺序

转载 作者:行者123 更新时间:2023-12-03 03:06:09 27 4
gpt4 key购买 nike

我有一个自定义 gradle 任务的问题:我想复制我的 android jar 库并在它执行“干净构建”之后重命名它
这是我如何定义它:

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 日志结果中,“清理”是在“构建”任务之后完成的,因此永远不会将 lib 复制到目标文件夹:
...
:mylibmodule:testReleaseUnitTest
:mylibmodule:test
:mylibmodule:check
:mylibmodule:build
:mylibmodule:clean
:mylibmodule:CreateJar NO-SOURCE

我还尝试更改“dependsOn:[]”中的任务顺序,但它没有改变任何东西......有谁知道我的错误在哪里?
提前致谢

最佳答案

dependsOn list 不强加任何排序保证。通常,如果没有其他关系确实强加了排序保证,则首先执行首先列出的内容。

(一个例子是,如果 clean 依赖于 build ,那么在 dependsOn 属性中如何定义它并不重要,因为 build 将始终在 clean 之前运行。事实并非如此对我来说很清楚,因此在括号中,只是为了澄清我的意思。)

最后确定为什么buildclean 之前运行我不能说没有看到完整的构建脚本。根据您发布的内容无法确定。

也许你所追求的是clean.shouldRunAfter buildclean.mustRunAfter build它定义了一个排序约束而不添加依赖项。因此,您可以单独运行每个任务,但如果两者都运行,则它们的顺序将按照您的指定进行定义。这两者之间的区别仅在并行化任务执行时相关,然后应该运行意味着它们可以并行运行 iirc,必须运行之后不允许这样做。

关于Gradle 任务依赖顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47570228/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com