gpt4 book ai didi

android - 在没有DependOn的任务中运行成绩任务

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

假设我从cmd行执行了一组任务,并且可以正常工作:

gradle processReleaseManifest compileReleaseSources run assembleRelease

我定义的任务在这里运行。

所以我的要求是我需要创建一个执行上述4个任务的任务,
例如说新任务abc,以相同的顺序运行上述任务,

我知道我不能在这种情况下使用dependsOn,因为processReleaseManifest compileReleaseSource在显示的构建gradle中使用时,

无法获得类型为 'assembleRelease'的项目 ':app'的未知属性 org.gradle.api.Project

那么解决方案是什么?

最佳答案

您可以使用@ lu.koerfer的答案表示,它使用dependsOn列表中的字符串来引用在构建文件中进一步定义的任务。

换句话说,这有效:

task foo {}
task bar(dependsOn: [foo]) {}

这也适用:
task bar(dependsOn: ['foo']) {}
task foo {}

现在,要使任务按顺序运行,您希望事情并没有那么简单。 dependsOn属性仅告诉任务在任务本身运行之前需要运行哪些任务。它不会告诉gradle按照 dependsOn子句中定义的顺序运行任务。

一个例子:
task one {}
task two {}
task three {}
task run(dependsOn: [one, two, three]) {}

运行时将导致以下输出:
~> gradle run
:one UP-TO-DATE
:three UP-TO-DATE
:two UP-TO-DATE
:run UP-TO-DATE

BUILD SUCCESSFUL

...请注意以下事实:我们没有按照 onetwothreerun的顺序运行。

换句话说,命令行调用会强制任务以定义的顺序运行,而 dependsOn是一个集合,没有顺序。

您可以通过几种方法使任务按所需顺序运行。一种是定义对任务的依赖关系(这可能是通用路径):
task one {}
task two(dependsOn: ['one']) {}
task three(dependsOn: ['two']) {}
task run(dependsOn: [one, two, three]) {}

结果是:
~> gradle run
:one UP-TO-DATE
:two UP-TO-DATE
:three UP-TO-DATE
:run UP-TO-DATE

BUILD SUCCESSFUL

另一种方法是使用gradle更高版本中添加的 task ordering constructs

另外,如果您需要向文件中较早位置定义的任务添加任务依赖项,则可以通过以下方式进行操作:
task foo {}
someTaskDefinedFurtherUp.dependsOn 'foo'

它将任务 foo添加到 someTaskDefinedFurtherUp的依赖项中。

关于android - 在没有DependOn的任务中运行成绩任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50871078/

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