gpt4 book ai didi

gradle - dist()方法在哪里

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

我正在尝试了解gradle的分布。在7.3.3.4节 gradle documentation 中,有以下代码示例:

task dist(type: Zip) {
dependsOn spiJar
from 'src/dist'
into('libs') {
from spiJar.archivePath
from configurations.runtime
}
}

我试图找到方法 dist()来了解它的确切作用。我在 org.gradle.api.tasks.bundling.Zip中搜索,但是没有这种方法。那么它在哪里声明呢?

最佳答案

您能否提供您提到的示例的链接?

似乎dist()方法未定义。您提供的代码示例只是一个任务定义,因此在这种特殊情况下dist只是Zip类型的已定义任务的名称。 frominto方法取自AbstractCopyTask

编辑

因此,如上所述,dist()只是一个普通的任务定义,而例如示例中的下一段代码:

artifacts {
archives dist
}

AbstractProject类中定义了一个专用方法:
public void artifacts(Closure configureClosure) {
ConfigureUtil.configure(configureClosure, getArtifacts());
}

现在,为什么会出现此错误:
Could not find method dist() for arguments [{type=class org.gradle.api.tasks.bundling.Zip}, txt, build_275gv6pdo8dsig251h253koq9t$_run_closure2@a81512] on proj ect ':MP'.

发生此输入:
task dist(type: Zip, 'txt')



在脚本解析过程中(这是一个动态且非常复杂的过程),上面的声明应转换为对 TaskContainer实例的 create方法之一的调用,其中dist是 String类型的任务名称,并且 type: Zip, 'txt'应该作为参数传递。如您在 TaskContainer的文档中所见,没有 create方法使用 String(dist-任务名称),然后是 Map(类型:Zip-任务配置),再输入一个String(txt-冗余/无效参数)。这就是为什么它失败了。

如果您对它的工作方式感兴趣,最好将以下代码放入build.gradle中:
task someTask {
throw new RuntimeException()
}

并研究堆栈跟踪。它会逐步告诉您很多有关它如何工作的信息。

关于gradle - dist()方法在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26564185/

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