首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

11--Gradle进阶 - Gradle任务定义方式、指定任务属性

11--Gradle进阶 - Gradle任务定义方式、指定任务属性 前言 在前面的篇章中,我们写了不少 task 任务,但是任务完整定义方式,指定哪些任务属性 没有一个归纳总结。...println "taskF...." } 定义任务属性 当然:我们也可以定义任务同时指定任务属性,具体属性有: img 在定义任务时也可以任务分配属性定义任务时候可以直接指定任务属性...,也可以给已有的任务动态分配属性: //3....定义任务属性 //①.Z是任务名,前面通过具名参数给map属性赋值,以参数方式指定任务属性信息 task(group: "lijw", description: "this is task Z",...lijw 组 clean.group("lijw") 可以在 idea 中看到: 上面自定义那几个任务gradle 自带 clean 任务已经跑到:lijw 组了。

16320

【Android Gradle 插件】Gradle 扩展属性 ① ( Gradle 扩展属性简介 | Gradle定义 task 任务示例 )

文章目录 一、Gradle 扩展属性简介 二、Gradle定义 task 任务示例 ( 扩展属性示例 ) Android Plugin DSL Reference 参考文档 : Android Studio...build.gradle 中调用 android , dependencies 等方法 , 都定义在 Project 类中 ; 如果我们想要自定义 Project 属性 , 就需要用到 扩展属性 机制...; 在 build.gradle 中直接使用 Groovy 代码即可实现 对 Project 类扩展 ; 在 Groovy 中定义普通属性代码如下 : 普通属性是局部变量 , 只能在本构建脚本中使用...在 Groovy 中定义扩展属性代码如下 : 扩展属性是全局变量 , 对所有子项目可见 ; // 定义扩展属性 , 其中变量对所有子项目可见 ext { hello1 = 'Hello World1...} 二、Gradle定义 task 任务示例 ( 扩展属性示例 ) ---- 在 build.gradle定义 变量 , 然后自定义 task 任务 , 输出该变量 , 代码如下 : // 定义局部变量

70120
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【Android Gradle 插件】自定义 Gradle 任务 ⑭ ( TaskOutputs#upToDateWhen 设置重复任务是否执行 | Gradle 预置任务 )

    upToDateWhen 方法 传入 闭包参数 返回值为 false , 无论执行多少次 , 无论任务输入 / 输出 是否相同 , 该任务都不会被跳过 , 强制执行 ; // 设置第二次执行时是否跳过...taskOutputs ; DefaultTask#taskOutputs 可以通过在自定义 DefaultTask 类中 , 通过调用 outputs 获取 , 实际上调用是 DefaultTask...预置任务 ---- 除了自定义 Gradle 任务之外 , Gradle 官方定义了一系列预置任务 , 如在 Android 工程跟目录 build.gradle 构建脚本中定义的如下任务 ,...delete 方法 , 就是在 build.gradle 构建脚本中调用方法 ; 在 Gradle 官方网站中 , 定义了一系列 Task 任务类型 , 可以在 https://docs.gradle.org.../current/dsl/#N1045C , 在该界面中 , 可以查看所有的官方定义任务类型 ;

    54010

    【Android Gradle 插件】自定义 Gradle 任务 ⑬ ( DefaultTask 中任务输入和输出属性 | TaskInputs 任务输入接口 | FileCollection )

    文章目录 一、DefaultTask 中任务输入和输出属性 ( DefaultTask#taskInputs | DefaultTask#taskOutputs ) 二、TaskInputs 任务输入接口...org.gradle.api.DefaultTask 配置 ( Gradle定义任务类父类 ) 文档 : https://docs.gradle.org/current/javadoc/org.../gradle/api/DefaultTask.html 一、DefaultTask 中任务输入和输出属性 ( DefaultTask#taskInputs | DefaultTask#taskOutputs...) ---- 自定义 Gradle 任务继承了 DefaultTask 类 , 原型如下 : public class DefaultTask extends AbstractTask implements...Gradle 任务中 , 可以调用 TaskInputs#getFiles 函数 , 获取设置输入文件集合 , 类型为 FileCollection , 函数原型如下 : FileCollection

    1.2K20

    【Android Gradle 插件】自定义 Gradle 任务 ⑥ ( 执行 Gradle 任务简化版命令 | 同时执行多个 Gradle 任务命令 )

    文章目录 一、执行 Gradle 任务简化版命令 二、同时执行多个 Gradle 任务命令 Android Plugin DSL Reference 参考文档 : Android Studio 构建配置官方文档...任务简化版命令 ---- 如果执行一个 Gradle 任务 , 该任务名称比较长 , 如 compileDebugAndroidTestSources 任务 , 可以使用波峰简化名称 ,...也就是取 compileDebugAndroidTestSources 首字母 c , 然后取后面的大写字母 , 最终使用 cDATS 作为该任务简称 ; 在 Terminal 面板中 , 可以执行...gradlew :app:cDATS 命令 , 来执行 compileDebugAndroidTestSources Gradle 任务 ; 二、同时执行多个 Gradle 任务命令 ----...如果需要同时执行多个 Gradle 任务命令 , 可以使用 空格 将多个任务隔开 , 如想要同时执行 compileDebugAndroidTestSources 任务 和 assemble 任务 ,

    83110

    【Android Gradle 插件】Gradle 扩展属性 ② ( 定义在根目录 build.gradle扩展属性 | 使用 rootProject.扩展属性名访问 | 扩展属性示例 )

    文章目录 一、定义在根目录 build.gradle扩展属性 二、扩展属性示例 Android Plugin DSL Reference 参考文档 : Android Studio 构建配置官方文档...Module 模块下 build.gradle可以获取到该扩展属性值 ; 在 Module 下 build.gradle可以使用 rootProject.扩展属性名 来访问定义在根目录中...build.gradle定义扩展属性值 ; 二、扩展属性示例 ---- 在根目录下 build.gradle定义扩展属性 : // 定义扩展属性 , 其中变量对所有子项目可见 ext {...} 在 build.gradle定义 变量 , 然后自定义 task 任务 , 输出该变量 , 代码如下 : // 定义局部变量 def hello = 'Hello World!'...// 自定义任务 , 输出自定义变量 task sayHello { println hello println rootProject.hello1 println rootProject.hello2

    2.9K20

    【Android Gradle 插件】自定义 Gradle 任务 ⑫ ( Gradle 任务输出和输出 | @Optional 注解 | UP-TO-DATE 避免重复执行任务 )

    ; 可以使用 @Input 和 @Output 注解形式 , 设置 Gradle 任务 输入 和 输出 ; /** * 自定义任务类 */ class MyTask extends DefaultTask..., 为 输入 和 输出 设置对应值 ; /* 生成自定义 Gradle 任务 */ task myTask(type: MyTask){ //input = 'hello'...output = 'out.txt' } 二、@Optional 注解 ---- Gradle 任务 输入 和 输出 值 , 一般不能为空 , 否则直接报错 ; 如果将 输入 和 输出 属性使用 @Optional...修饰 , 则对应 输入 或 输出 属性 可以为空 ; 添加了 @Optional 注解后 , 输入 即使为空 , 也不会报错 ; 二、UP-TO-DATE 避免重复执行任务 ---- Gradle...任务 输入 和 输出 是任务是否执行标志 , 可以避免 Gradle 任务被重复执行 ; 如果 Gradle 任务执行完毕后 , 有了一个 输入 和 输出 值 ; 再次执行该 Gradle 任务

    74120

    【Android Gradle 插件】Gradle定义 Plugin 插件 ④ ( 为自定义 Gradle 插件扩展配置扩展 | 在自定义插件中获取扩展属性 )

    文章目录 一、Android Gradle 插件扩展扩展 二、为自定义 Gradle 插件扩展配置扩展 并 获取扩展属性 Android Plugin DSL Reference 参考文档 : Android...Gradle 插件扩展 | 自定义 Extension 扩展 ) 中 , 实现了 自定义插件 扩展 Extension , 在 Module 模块下 build.gradle 构建脚本中 ,...Plugin 插件 Extension 扩展 中 , 再 定义一层 Extension 扩展 ; 二、为自定义 Gradle 插件扩展配置扩展 并 获取扩展属性 ---- 定义扩展类 : class...def name def age } 声明扩展 和 扩展扩展 : 通过调用 project.扩展名.扩展属性 可获取在构建脚本中配置 扩展属性 , 通过调用 project.扩展名.扩展扩展名....扩展属性 可获取在构建脚本中配置 扩展属性 扩展属性 ; import org.gradle.api.Plugin import org.gradle.api.Project class MyPlugin

    2K10

    Gradle构建-从Eclipse到Studio介绍篇

    Android Studio 将代码组织到项目中,其中包含从应用源代码到构建配置和测试代码等定义 Android 应用所有信息。每个项目包含一个或多个模块,您可以将项目分成独立功能单元。...工具窗口栏:在 IDE 窗口外部运行,并且包含可用于展开或折叠各个工具窗口按钮。 5. 工具窗口:提供对特定任务访问,例如项目管理、搜索和版本控制等。您可以展开和折叠这些窗口。 6....Event Log:用户在Studio中操作事件日志。例如用户更新了插件,触发了同步等。 Gradle Console:输出Gradle详细构建任务信息流。...显示当前工程有哪些构建Task,每个Task归属在不同Group里边,手管自定义构建任务在名字为meriGroup中。根据列出Task,双击可单独执行该Task。...内联调试信息包括: 内联变量值 引用某选定对象引用对象 方法返回值 Lambda 和运算符表达式 工具提示值 要启用内联调试,请在 Debug 窗口中点击 Settings ,然后选中 Show Values

    2.1K00

    落地包体积监控,用Kotlin写一个APK差异分析CLI

    ; 简而言之,Clikt 是一个功能丰富库,可以帮助开发者快速构建命令行工具,同时具有灵活定义和多平台支持。...Gradle ,所以默认会带有一个 application 插件,因此提供一个 Gradle 任务,来将我们 jar和脚本 控绑在一起启动(run Main时),从而免除了每次调试都要在命令行 java...因为我们使用了 Gradle 进行依赖配置,那么相应,也可以使用附带命令即可,默认有这几个命令可供选择: jar 直接打成jar包,后续直接在命令行java -jar 方式驱动。...分析 拿到上一步配置结果后,接下来就要开始进行分析,此时我们要考虑设计上分层,比如匹配规则如何定义,采用怎样数据结构比较好,规则是否严谨,甚至如果要替换基础实现思路,改动会不会依然低成本;...灵活运用语言技巧 Kotlin 内联类 是一个很棒特性,无论是性能还是可读性方面,如果我们有某个字段,是使用基本类型作为定义,那么此时就可以考虑将其定义内联类。

    46710

    Gradle 进阶学习 之 Task

    使用Map来定义任务 Map属性:你还可以使用一个Map来定义任务,其中Map中action键可以设置为一个闭包,用来指定任务行为。...当然:我们也可以定义任务同时指定任务属性,具体属性有: type 描述:这个配置项允许你指定任务类型,即基于一个已存在任务类型来创建新任务,类似于在面向对象编程中类继承。...通过任务输入输出 Gradle 也允许你通过定义任务输入和输出文件来指定执行顺序。Gradle 会根据这些文件存在与否来决定是否需要执行任务。...3.9 任务关闭与开启 在Gradle中,每个任务都有一个enabled属性,用来控制任务是否应该被执行。这个属性默认值为true,意味着任务是启用,将按照正常流程执行其动作。...3.13.3 使用场景 onlyIf 方法可以用于多种场景,例如: 仅在某些环境变量设置时执行特定任务。 根据项目属性决定是否运行测试。 条件性地打包或部署应用程序。

    24310

    第三章 Gradle构建脚本基础

    3.6 任务间通过API控制、交互 创建一个任务和我们定义一个变量是一样,变量名就是我们定义任务名,类型是Task(参见Gradle API Doc),所以我们可以通过任务名,使用TaskAPI访问它方法...我们稍微改动下例子,看看是否有ex36Hello这个属性: 我们通过println project.hasProperty('ex36Hello')检查是否有这么个属性,运行后通过输出我们可以看到,打印是...既然可以通过API操纵任务,那么当创建了多个任务时,同样也可以通过API让他们相互访问,比如可以增加一些依赖等等,就像两个两个变量相互访问一样. 3.7 自定义属性 Project和Task都允许用户添加额外定义属性...,要添加额外属性,通过所属对应ext属性即可,添加之后可以通过ext属性对自定义属性读取和设置,如果要同时添加多个自定义属性可以通过ext代码块: //自定义一个Project属性 ext.age...,你可以跨Project,跨Task访问这些自定义属性,只要你能访问这些属性所属对象,那么这些属性可以被访问到。

    47710

    为什么说 Gradle 是 Android 进阶绕不去

    项目级 build.gradle 文件: 用于定义所有子模块公共配置参数; 模块级 build.gradle 文件: 用于定义子模块配置参数,它可以覆盖项目级 build.gradle 文件中定义配置...4.2 Project 属性 API Project 提供了一系列操作属性 API,通过属性 API 可以实现在 Project 之间共享配置参数: hasProperty(String): 判断是否存在指定属性名...我们经常会在 Root Project 中定义 ext 属性,而在子 Project 中可以直接复用属性值,例如: 项目 build.gradle ext { kotlin_version =...增强 Task 可重用性更好,并且可以通过暴露属性方式来定制 Task 行为。 1、DefaultTask: 自定义 Task 必须继承 DefaultTask。...Gradle 通过对比自从上一次构建之后,Task inputs 和 outputs 是否变化,来决定是否跳过执行。如果相同,则 Gralde 认为 Task 是最新,从而会跳过执行。

    2.5K10

    Gradle 构建脚本基础(introductory tutorial)

    Extra task properties 额外任务属性可以将自己属性添加到任务中。 若要添加名为 myProperty 属性,请将 ext.myProperty 设置为初始值。...从那时起,可以像预定义任务属性那样读取和设置该属性。...tasks 默认任务 Gradle 允许您定义一个或多个在没有指定其他任务情况下执行默认任务。...在多项目构建中,每个子项目都可以有自己特定默认任务。 如果子项目未指定默认任务,则使用父项目的默认任务(如果已定义)。...在配置阶段之后,Gradle 知道应该执行所有任务Gradle 为你提供了一个利用这些信息钩子。 这样做用例是检查发布任务是否在要执行任务之中。

    78120

    使用新 Android Gradle 插件加速您应用构建

    相比仅扩展 DSL,扩展 Variant API 有这样一些优势: DSL 值是固定,但自定义变体属性可以使用构建任务输出,Gradle 会自动处理所有构建任务依赖项。...您可以很方便地为每个变体定义变体属性设置独立值。 与自定义 DSL 相比,自定义变体属性能提供与其他插件之间更简单、稳健交互。...这样做是为了与 Android Gradle 插件内部代码习惯保持一致,既能支持您将任务输出作为自定义属性值,又避免您再去考虑复杂插件排序过程。...set("Hello ${variant.name}") } ) } △ 在 build.gradle 中使用带有自定义变体属性扩展 虽然这样写法没有直接扩展 DSL 那样简单,但它可以很方便地为每个变体设置自定义属性值...完成 beforeVariants 块各项操作后,我们可以继续在 onVariants 块将自定义变体属性赋值给任务输入了。

    2.6K30

    Gradle For Android(7)--创建Task以及Plugin

    介绍 到目前为止,我们已经看到了很多Gradle构建属性,并且知道了怎么去执行Tasks。这一章,会更多了解这些属性,并且创建我们自己Task。...这个闭包传入是一个DependencyHandler对象,而这个对象中存在add函数。 这个函数接受了三个参数,一个String定义了配置,一个对象定义了依赖库,以及一个闭包可以指定依赖属性。...Gradle任务可以提升我们开发效率。...= password 现在我们已经完成我们任务,我们需要确认当执行一次Release构建时候是否成功,接下来在build.gradle中添加这几行: tasks.whenTaskAdded { theTask...因为我们需要依赖install任务,所以必须要检查这个任务是否存在。一旦我们确定了install任务存在,我们就可以创建一个新Task,并且基于Variant名字赋予这个Task名字。

    1.9K20

    Gradle Authoring Tasks

    Gradle 支持增强型任务,这些任务具有自己属性和方法。 这与您习惯使用 Ant 目标的情况大不相同。 这些强化任务要么是你提供,要么是内置在 Gradle 。...这些标签基于任务是否有要执行操作,是否应该执行这些操作,是否确实执行了这些操作,以及这些操作是否做了任何更改。...Passing arguments to a task constructor 将参数传递给任务构造函数 与在创建 Task 后配置可变属性相反,您可以将参数值传递给 Task 类构造函数。...在“任务依赖项”中,介绍了如何使用任务名称定义依赖项。 任务名称可以引用与任务相同项目中任务,也可以引用其他项目中任务。...对于更高级用途,可以使用惰性块定义任务依赖项。

    80510

    Gradle入门基础一

    任务配置段在配置阶段执行,任务行为在执行阶段执行 任务行为 def map=new HashMap(); //action属性可以设置为闭包,设置task自身行为...gradle help --task someTask :显示某个任务详细信息gradle dependencies :查看整个项目的依赖信息,以依赖树方式显示gradle properties 列出所选项目的属性列表...gradle init --type pom :将maven 项目转换为gradle 项目(根目录执行)gradle [taskName] :执行自定义任务 ......//action属性可以设置为闭包 task(map,"D"); tasks.create('E'){//使用taskscreate方法 println "taskE.." } tasks.register...println "taskF " } Task属性 配置项 描述 默认值 type 基于一个存在Task来创建,和我们类继承差不多 DefaultTask overwrite 是否替换存在Task

    22010
    领券