gpt4 book ai didi

gradle - 了解 gradle processResources 过滤器语法

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

以下似乎是 gradle 中过滤资源文件子集的常用习惯用法。我明白它的作用,但我无法解读语法:

processResources {
filesMatching('foo/*.html') {
filter(ReplaceTokens, tokens: [key: 'value'])
}
}

到目前为止我的理解是:

  • processResources是Java插件的任务,是Copy类型。

  • 我正在通过调用以下方法配置 processResources 任务:

    AbstractCopyTask filesMatching(String pattern, Action<? super FileCopyDetails> action)

  • 该方法的第一个参数是模式字符串。我提供“foo/*.html”作为模式。

  • 该方法的第二个参数是 Action只有一个方法的接口(interface)。我提供了一个闭包作为接口(interface)的实现。

这就是我迷路的地方。在闭包主体中,我正在调用过滤器方法。它从何而来?它也不是来自隐式项目对象。而且,过滤器方法甚至不应用于任何文件对象。 token 是如何替换的?而且,ReplaceTokens是一个类,将类名作为参数传递在句法上如何工作?

我没有把这些点联系起来,我什至不确定这些点是在 gradle 中还是在 groovy 中。我已经通过文档和博客进行了一段时间的研究,但运气不好。我感谢一些帮助。谢谢。

最佳答案

您要查找的filter 方法在CopySpec 接口(interface)中定义,正好是here . filesMatching 也在 CopySpec 中声明,因为 ProcessResources -> Copy -> AbstractCopyTaskAbstractCopyTask 实现 CopySpec 这些方法在任务本身上调用。

token 替换由 ReplaceTokens 完成来自 Ant 的类,当涉及到 groovy String == String.class 中的语法时。过滤本身在 this 中运行类。

我可能向您推荐的是下载 gradle 源代码,将它们导入 IDE 并从 ProcessResourcess 类开始旅程 - 这是了解发生了什么的最简单方法在幕后。

关于gradle - 了解 gradle processResources 过滤器语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43359843/

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