Gradle 任务差异

2024-02-07

下面两个代码片段有什么区别?

First:

task copyFiles(type: Copy) << {
  from "folder/from"
  into "dest/folder"
}

Second:

task copyFiles(type: Copy) {
  from "folder/from"
  into "dest/folder"
}

简而言之,第一个片段是错误的,第二个片段是正确的。

Gradle 构建分为三个阶段:初始化、配置和执行。方法如from and into 配置一个任务,因此需要在配置阶段调用它们。然而,<<(这是一个快捷方式doLast)添加一个任务动作- 它指示任务做什么if and when它被执行。换句话说,第一个片段在执行阶段配置任务,更糟糕的是,after它的主要(复制)动作已经执行。因此该配置不会产生任何影响。

通常,一个任务有either类型(已经带来任务操作)or a <<(对于临时任务)。两者都有合法的用例(在任务的“主要”工作之后做一些自定义工作),但更常见的是,任务配置得太晚是一个错误。

我一般推荐使用doLast代替<<,因为它不那么神秘,并且更容易发现此类错误。 (一旦你理解了这些概念,很明显task copyFiles(type: Copy) { doLast { from ... } }是错的。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Gradle 任务差异 的相关文章

随机推荐

  • Java:需要从字节数组创建 PDF

    我从 DB2 表中得到了 blob 我正在将其转换为字节数组 以便我可以使用它 我需要获取字节数组并创建一个PDF出来了 这就是我所拥有的 static void byteArrayToFile byte bArray try Create
  • 哪些列表可以作为临时列表?

    当处理项目列表时 列表仅充当暂时的容器 您建议我使用哪些列表类型 I 不想手动销毁列表 想要使用built in列表类型 无框架 库 想要仿制药 可以在不导致泄漏的情况下实现这一点的东西 function GetListWithItems
  • 使用ionic安装和卸载cordova应用程序时执行脚本

    我使用 cordova 已经有好几年了 使用 ionic 的时间还不到一年 我正在寻找在安装应用程序和卸载应用程序时运行 JavaScript 函数的方法 我做了很多搜索 但没有找到任何相关内容 有人有一个想法 至少有一个近似值可以作为起点
  • 让menhir将用户定义的函数从.mly添加到.mli

    Menhir 允许将任意 ocaml 代码添加到 mly 文件的末尾 我想在其中声明一些函数 但我找不到一种方法让 menhir 将我的函数添加到 mli 文件中 以便它们从其他模块中可见 是否可以 答案很简单 那就是no 中定义的代码 m
  • 解决导航属性 Dynamics WebAPI 深度插入时出现的错误

    我正在使用微软动态Web API https msdn microsoft com en us library mt607689 aspx将数据写入 Microsoft Dynamics 365 中的实体 当我尝试执行深插入 https m
  • 用于 Angular.js 依赖注入管理的 Grunt.js

    我正在使用 Grunt 自动构建我的网络应用程序 我遇到了一个有趣的问题 我有两个选择 1 grunt dev and 2 grunt build grunt dev只执行与开发相关的基本任务 我的 主要 Angular 模块如下所示 va
  • Py_None 的值

    我很清楚None用于表示缺乏价值 但由于在实现过程中一切都必须有一个潜在的价值 所以我想看看使用了什么值来表示没有值 关于CPython 我理解 基于文档 https docs python org 3 c api none html c
  • 无法使用 $http angularjs 获取结果数据

    我尝试使用 http 但为什么它返回 null 结果 angular module myApp factory sender function http var newData null http get test html success
  • 为泛型接口配置装饰器,并在简单注入器中将所有实例注入到具有非泛型接口参数的构造函数

    我一直在使用与所描述的非常相似的模式在这篇优秀的文章中 http www cuttingedge it blogs steven pivot entry php id 91将命令和查询作为对象 我还使用 SimpleInjector 作为
  • 当应用程序关闭并重新打开时 Android 崩溃

    我有一个非常简单的 Android 应用程序 只显示一个空白的白色屏幕 当我按 主页 按钮关闭应用程序 然后尝试再次打开该应用程序时 它崩溃了 并且我收到 强制关闭 按钮 在 Eclipse 中 我收到此错误 ActivityManager
  • 正则表达式匹配顺序

    我的问题很简单 假设我想匹配单词中的元音 但我想按照出现的特定顺序来匹配它们 例如 a e i o u 我该怎么做呢 所以你正在寻找a后面跟着一些字符 然后e后面跟着一些字符 等等 换句话说 a接下来是不是的东西e then e 然后是那些
  • 从 git 存储库中删除丢失的 LFS 对象

    我的 git 存储库 中缺少一堆 LFS 对象 无论是在客户端还是在服务器上 我知道那些物品丢失了 没关系 不幸的是这意味着git lfs fetch all甚至git lfs push all origin将失败 我想从存储库中清除 损坏
  • 迭代对数幂

    我最近搞砸了一次采访 使用 collabedit 的电话屏幕 这是问题 编写一个交互式 O lg n 算法来求 x y 的幂 x 是双精度型 y gt 0 是整数 我首先进行了递归分而治之 并尝试将其转换为迭代 但我不能 S 有没有一种方法
  • Rust 使用 vs mod?

    我正在努力解决这些问题 use宣言 A 使用声明创建一个或多个与其他路径同义的本地名称绑定 通常 一个use声明用于缩短引用模块项所需的路径 这些声明可能出现在模块和块中 通常位于顶部 And mod item A 模块项是一个模块 用大括
  • 如何在 Xcode (Swift) 中添加自动完成注释?

    如何将文本添加到自动完成功能 如下所示 告诉元素激活自身 部分 这就是我所拥有的 但是 这是一个测试 部分不会出现在自动完成中 请不要链接到其他介绍如何编写评论的帖子 以便它们会显示在通过 Option Click 弹出的窗口中 我很清楚如
  • 多租户身份服务器 4

    我正在尝试实现一个 IdentityServer 来处理多租户应用程序的 SSO 我们的系统将只有一个 IdentityServer4 实例来处理多租户客户端的身份验证 在客户端 我正在使用acr value传递租户 ID Startup
  • 如何在package.json中添加多个NODE_PATH?

    如何在package json中添加多个NODE PATH 我想要有这些多条路径 NODE PATH NODE PATH modules or NODE PATH lib NODE PATH modules 包 json name my a
  • 将 pandas 数据框列转换为带有源和目标的 networkx 图

    我在 pandas 中有一个 DataFrame 其中包含有关人员及时位置的信息 大约有 300 多万行 这是示例 其中每个名称都分配给一个唯一的index by group by并排序Name and Year import pandas
  • htaccess 通过查询字符串阻止请求

    有没有办法阻止具有特定查询字符串的所有请求 我应该阻止所有包含 userid 1234 或 userid 1234 的请求 例如 directory page php userid 1234 var2 abc var3 directory
  • Gradle 任务差异

    下面两个代码片段有什么区别 First task copyFiles type Copy lt lt from folder from into dest folder Second task copyFiles type Copy fro