Android开发经验谈Android开发

Gradle速记笔记

2020-04-21  本文已影响0人  JuliusL

P70-P91

maven仓库:https://mvnrepository.com/
gradle文档:https://docs.gradle.org/

task的依赖

执行task的时候,会先执行depensOn的任务

task().dependsOn()

task的生命周期

task("opendoor",{
  println("开冰箱门")//声明逻辑,扫描的时候执行
})
task("putelephant",{
  var aa = "" //扫描时执行
  doFirst{//当某个任务开始做的时候去执行
    println("放入大象")
  }
  doLast{
    //运行时执行
  }
}).dependsOn("opendoor")
task("closedoor",{

}).dependsOn("putelephant")

1,扫描
把task闭包里声明的逻辑全部走一遍
2,运行
把task闭包里doFirst和doLast走一遍

gradle的增量更新

//build.gradle.kts

//把所有源代码文件名记录下来
task("getsrcname",{
    inputs.dir("src")
    outputs.file("info.txt")
    doFirst{
        var srcdir = fileTree("src")
        var infotxt = file("info.txt")
        infotxt.writeText("")
        srcdir.forEach{
            if(it.isFile){
                infotxt.appendText(it.absolutePath)
                infotxt.appendText("\r\n")
            }
        }
    }
})

gradle插件合集

1,application插件:编译出一个java/kotlin的应用程序
2,java插件
3,war插件

gradle依赖管理

依赖管理:指在什么地方以什么形式引入外部代码。
比eclipse好在不用手动导关联包。
gradle会自定把包中依赖的包下载下来。


gradle依赖管理有个重要的概念是:OOP思想,以下部分就是坐标

compile group:'commons-httpclient',name:'commons-httpclient',version:'3.1'

group:一般用包名表示,表示项目由哪个组织开发的
name:一般是项目的名称
version:该元素定义jar包的版本
有了这些内容,相当于把原先杂乱无比的jar包分门别类,定好归属,方便管理。

TDD测试驱动开发

gradle依赖冲突

1,首先gradle会自动把冲突库中版本号较小的关联库该为大的那个关联库。
2,如果1未能解决冲突,需要手动解决的话。就在闭包中加入exclude移除冲突的包。

compile(/*group:*/'commons-httpclient',/*name:*/'commons-httpclient',/*version:*/'3.1'){
  exclude("group","module")
}

gradle自定义扩展

指针对gradle定义好的任务,去扩展。
自定义删除的任务👇

task("mydelete",Delete::class,{
    setDelete("src/main/java/Hello.java")
})

除了删除还有copy和打成jar包,这些在gradle官网文档里都有。

gradle外部扩展

用gradle执行class文件:

task("runjava",{
    javaexec{
        main="Test" //.class文件名
        classpath(".") // 点代表当前gradle文件的根目录
    }
})
上一篇下一篇

猜你喜欢

热点阅读