配置插件任务

时间:2021-05-31 06:09:39

标签: gradle

我还是 Gradle 的新手,我正在努力理解插件任务的任务配置是如何工作的。考虑来自 Java 插件的 Jar 任务:如果我覆盖了 doFirstdoLast 方法,为什么插件的原始操作集仍然发生,但是如果我更改了 description Jar 任务然后使用我的新描述?我的构建脚本的内容是:

plugins{
    id 'java'
}

jar {
    description "The new description"
    doFirst {
        println "this happened first"
    }
    doLast {
        println "This happened last"
    }
}

我问这个更多是为了巩固我对 gradle 工作原理的理解,而不一定是因为我还想这样做。

1 个答案:

答案 0 :(得分:0)

Gradle 脚本只是在用 Java 编写的 Gradle API 上运行的 Groovy 脚本(带有一些附加功能)。您可以查看 API 文档,您的大部分问题都会得到解决:

<块引用>

考虑来自 Java 插件的 Jar 任务

让我们学究一下:Java 插件中没有 Jar 任务,只有 jar 类型的 Jar 任务。在此上下文中区分任务类型和任务实例非常重要。现在让我们查看 Gradle 中 Jar 任务类型的文档。如您所见,它继承自 DefaultTask 类型。 DefaultTask 定义了 Gradle 任务通用的所有属性和方法:

<块引用>

doFirst​(Closure action) - 将给定的闭包添加到此任务的开头 行动清单。
doLast​(Closure action) - 将给定的闭包添加到此任务的操作列表的末尾。

如您所见,无论何时使用 doFirstdoLast,它只会将任务操作附加(或前置)到现有任务操作列表中,不会覆盖任何内容。

感谢 Groovy,使用 description 为属性 = 赋值实际上会调用方法 setDescription

<块引用>

setDescription​(String description) - 设置此任务的描述。

这是 Java 世界中已知的经典属性设置器。它将简单地设置新值,而旧值将被覆盖。

相关问题