技术经验谈 技术经验谈
首页
  • 最佳实践

    • 抓包
    • 数据库操作
  • ui

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • 总纲
  • 整体开发框架
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

hss01248

一号线程序员
首页
  • 最佳实践

    • 抓包
    • 数据库操作
  • ui

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • 总纲
  • 整体开发框架
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 编译和自动化

    • gradle基础
    • gradle-task
    • appbundle打包的自动化
    • cmake vs gradle
    • cmake入门
    • gradle依赖管理
    • gradle加速之拉取依赖的加速
    • gradle远程脚本
    • maven
    • 多module时自动发布所有lib
    • 将react native打包成一个aar
  • 异常上报和监测

  • SDK封装方法论
  • 结构化文档一键转代码的实践-埋点-翻译-java api注释
  • 防御式编程例子1-颜色解析工具的处理
  • 工程方法
  • 编译和自动化
hss01248
2022-08-04

gradle-task

# gradle task

# 1. 定义一个task,插入到一个已知task之前/之后,使运行改已知task时,自动运行你定义的task

示例: 将一个打印版本号和路径的task挂载到uploadArchives之后:

group='com.hss01248.plugin2'
version='1.0.03'

uploadArchives {
    repositories {
        mavenDeployer {
            //提交到远程服务器:
            // repository(url: "http://www.xxx.com/repos") {
            //    authentication(userName: "admin", password: "admin")
            // }
            //本地的Maven地址设置为D:/repos
            repository(url: mavenLocal().getUrl())
        /*    pom.artifactId = '项目信息'
            pom.version = '版本信息'
            repository(url: '私服仓库地址') {
                authentication(userName: '账号', password: '密码')
            }
            snapshotRepository(url: '私服快照地址') {
                authentication(userName: '账号', password: '密码')
            }*/
        }
    }
}

task task1(){
    doLast{
        def url = uploadArchives.repositories.mavenDeployer.repository.url
        def groupId = uploadArchives.repositories.mavenDeployer.pom.groupId
        def artifactId = uploadArchives.repositories.mavenDeployer.pom.artifactId
        def version = uploadArchives.repositories.mavenDeployer.pom.version
        println "发布版本: $groupId:$artifactId:$version"
        println "url: $url"
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

挂载的操作:

//https://juejin.cn/post/6844904016778903560
//https://juejin.cn/post/6982379643311489032

afterEvaluate {
    // 1. 找到需要依赖自己 Task的构建流程的Task
    def uploadArchives = tasks.findByName("uploadArchives")
    def task1 = tasks.findByName("task1")
    println "uploadArchives=$uploadArchives"
    // 2. 通过finalizedBy 方法,挂载到指定Task之后
    if(uploadArchives != null){
        uploadArchives.finalizedBy(task1)
    }
  
    //示例2: 插入到uploadArchives之前:
    def task2 = tasks.findByName("task2")
    // 2. 通过dependsOn 方法,插入到指定Task之前
    if(uploadArchives != null){
        uploadArchives.dependsOn(task2)
    }
  
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

运行uploadArchives,然后可以看到日志:

image-20220804114918258

# 2 .将一个task插入到本来已有依赖关系的两个task之间:

mustRunAfter 结合 dependsOn

Gradle 的mustRunAfter是个大坑,必须要配合dependsOn来用。。。

image-20210628172923093

afterEvaluate {

  // 1. 找到需要挂接的Task
    def mergeResourcesTask = tasks.findByName("mergeDebugResources")
    def processDebugResourcesTask = tasks.findByName("processDebugResources")

  // 2.让自定义的 Task 在 mergeDebugResources 任务之后且在 processDebugResources 之前执行
    checkBigImage.mustRunAfter(mergeResourcesTask)
    processDebugResourcesTask.dependsOn(checkBigImage)
}

作者:LittlePlum
链接:https://juejin.cn/post/6982379643311489032
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 3 打印task依赖树

apply from:"https://raw.githubusercontent.com/hss01248/flipperUtil/dev/z_config/deps/depsLastestChecker.gradle"

tasks面板里的deps/listXxxTask
1
2
3

# 参考资料

从Gradle生命周期到自定义Task挂接到Build构建流程全解 (opens new window)

编辑 (opens new window)
上次更新: 2022/08/25, 20:20:31
gradle基础
appbundle打包的自动化

← gradle基础 appbundle打包的自动化→

最近更新
01
截图后的自动压缩工具
12-27
02
图片视频文件根据exif批量重命名
12-27
03
chatgpt图片识别描述功能
02-20
更多文章>
Theme by Vdoing | Copyright © 2020-2025 | 粤ICP备20041795号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式