gradle自定义task
来源:互联网 发布:python httplib2 编辑:程序博客网 时间:2024/04/30 23:26
1.在build.gradle文件中直接定义
我们知道,Gradle其实就是groovy代码,所以在build.gradle文件中,我们便可以定义Task类。
class HelloWorldTask extends DefaultTask { @Optional String message = 'I am davenkin' @TaskAction def hello(){ println "hello world $message" }}task hello(type:HelloWorldTask)task hello1(type:HelloWorldTask){ message ="I am a programmer"}
在上例中,我们定义了一个名为HelloWorldTask的Task,它需要继承自DefaultTask,它的作用是向命令行输出一个字符串。@TaskAction表示该Task要执行的动作,即在调用该Task时,hello()方法将被执行。另外,message被标记为@Optional,表示在配置该Task时,message是可选的。在定义好HelloWorldTask后,我们创建了两个Task实例,第一个hello使用了默认的message值,而第二个hello1在创建时重新设置了message的值。在执行hello时,命令行输出如下:
:hellohello world I am davenkinBUILD SUCCESSFULTotal time: 2.139 secs
在执行hello1时,命令行输出如下::hello1hello world I am a programmerBUILD SUCCESSFUL
2.在当前工程中定义Task类型
在buildSrc目录下定义Task类型,Gradle在执行时,会自动地查找该目录下所定义的Task类型,并首先编译该目录下的groovy代码以供build.gradle文件使用。在当前工程的buildSrc/src/main/groovy/davenkin目录下创建HelloWorldTask.groovy文件,将(1)中对HelloWorldTask的定义转移到该文件中:
package davenkinimport org.gradle.api.*import org.gradle.api.tasks.*class HelloWorldTask extends DefaultTask { @Optional String message = 'I am davenkin' @TaskAction def hello(){ println "hello world $message" }}
这里,我们将HelloWorldTask定义在了davenkin包下,因此在build.gradle文件中引用该Task时,我们需要它的全名称:task hello(type:davenkin.HelloWorldTask)task hello1(type:davenkin.HelloWorldTask){ message ="I am a programmer"}
以上的hello和hello1与(1)中的hello和hello1完成的功能相同。3.在单独项目中定义Task类型
虽然(2)中的Task定义与build.gradle分离开了,但是它依然只能应用在当前工程中。如果我们希望所定义的Task能够用在另外的项目中,那么(2)中的方法便不可行的,此时我们可以将Task的定义放在单独的工程中,然后在所有使用Task的工程中通过声明依赖的方式引入这些Task。
创建另外一个项目,将(2)中buildSrc目录下的内容考到新建项目中,build.gradle文件如下:
apply plugin: 'groovy'apply plugin: 'maven'version = '1.0'group = 'davenkin'archivesBaseName = 'hellotask'repositories.mavenCentral()dependencies { compile gradleApi()}uploadArchives { repositories.mavenDeployer { repository(url: 'file:../lib') }}
客户端引入jar依赖,build.gradle文件可以做以下配置:task hello(type: davenkin.HelloWorldTask)
阅读全文
0 0
- Gradle--自定义Task
- 自定义Gradle task
- gradle自定义task
- Android Gradle 自定义Task 详解
- Gradle 自定义Task 打Jar包
- Android Gradle 自定义Task详解二:进阶
- Gradle 使用指南 -- Gradle Task
- Gradle学习系列之九——自定义Task类型
- Gradle学习系列之九——自定义Task类型
- Gradle学习系列之九——自定义Task类型
- Gradle学习系列之九——自定义Task类型
- Gradle学习系列之九——自定义Task类型
- Gauge中Gradle自定义Task失败的解决方法
- Gradle学习系列之九——自定义Task类型
- 如何将自定义task在gradle系统task运行前后执行?
- task与自定义task
- configuring gradle test task
- Gradle 中的 task 依赖
- 按字节截取字符串
- Java反射机制与动态代理
- Maven安装本地jar
- git detached 解决
- 【java面试】算法篇之堆排序
- gradle自定义task
- 获得函数参数名
- A20平台,重启路由器交换机后设备就上不了网了(以太网)
- AndroidStudio好用的插件ParcelableGenerator、GsonFormat、ButterKnife Zelezny、Generate SelectorDrawable
- APP升级版本比较
- nginx负载均衡简单配置
- Java 关于List 的排序
- the road of IELTS
- idea快捷键