有没有小老弟学完Kotlin还想学Groovy?其实Gradle从4.1开始就支持Kotlin语言啦!学完Kotlin不仅可以代替Java语言开发Android,还可以顺便代替Groovy编写Gradle文件哦!一种语言就能玩转Android,懒人必备技术!
(注:还不会Kotlin的小老弟先去学一下Kotlin)那么废话不多说,下面开始开车,请坐稳。。。
一、创建一Gradle工程(这边我们直接用Idea,as的爸爸)
直接New一个Gradle的工程就可以了,非常简单。
二、Gradle版本配置(4.1及以上)
在工程目录找到gradle文件夹,里面有一个gradle-wrapper.properties

image
打开文件,内容like this,'#'开头的是注释,Url是gradle的地址,如果没有下载过会自动下载,如果要手动下载改成
''file:///'' 开头配上本地Gradle路径即可,把gradle版本改到4.1或者以上,这边是4.10.3
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.3-bin.zip
#distributionUrl=file:///c:/...
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
三、更改gradle文件类型
修改gradle.build->gradle.build.kts,然后删除里面原来的内容,为了防止IDE出错,建议重启一下软件

image.png
四、重头戏:正式写代码
1、写一个任务(Task)
其中最外面的代码块会在扫描时就运行了,有点像java的static代码块,然后doFirst和doLast代码块会
在Task运行的时候调用,doFirst在doLast之前。
task("myTask", {
//扫描时运行
println("scan")
//调用时运行
doFirst {
println("myTask")
}
doLast{
}
})
2、运行任务
IDE的右侧打开Gradle选项,找到Tasks->other->myTask,双击即可手动运行

image.png
3、任务依赖
如下代码,myTask2运行的时候会首先运行myTask任务,再运行自己。
task("myTask2", {
//扫描时运行
println("scan")
//调用时运行
doLast {
println("two")
}
doFirst {
println("one")
}
}).dependsOn("myTask")
3、默认任务查看和配置
如下任务可以打印出Gradle工程的默认任务,工程运行的时候会自动运行默认任务,如果想把自己的任
务添加到默认任务,直接用defaultTasks方法就可以,如下所示。
task("kown_default_task", {
project.properties.forEach { t, any ->
println("$t:$any")
}
})
//默认执行任务配置
defaultTasks("myTask")
4、自定义插件拓展
想偷懒,可以直接使用插件辅助完成一些任务,如下自定义插件拓展任务,分别可以删除文件,拷贝文件,打包成Jar
task("myDelete",Delete::class,{
//setDelete("src/main/java/temp")
})
task("myCopy",Copy::class,{
from("src")
into("haha")
})
task("myJar",Jar::class,{
from("src")
into("a.jar")
})
4、调用外部拓展
没有内部拓展,想用外面拓展代码?没有问题。。。如下Main为Main.class的java代码,classpath配置类文件的路径,"."为根目录,就是工程的根目录,具体目录可以自己随便设置。
//调用外部拓展
task("useOutsideCode",{
doFirst({
javaexec{
main = "Main"
classpath(".")
}
})
})
5、配置插件
配上application插件,然后在application里面配上主类就可以运行,大家直接把gradle.build.kts清空然后
写上下面几句就可以直接run程序啦,是不是非常简单快速?(当然如果有小老弟MainKt文件都没有创建
就想运行,那是不可能的,还跑步起来就重装系统吧,哈哈)
//application插件
//java插件
//war插件
plugins{
application
`kotlin-dsl`
}
application {
mainClassName = "MainKt"
}
6、配置仓库
repositories{
mavenCentral()
jcenter()
}
7、配置依赖
dependencies{
compile(kotlin("stdlib"))
//依赖管理
//gradle会自动下载三方的依赖包
compile("commons-httpclient","commons-httpclient","3.1")
//编译时依赖 compile
//测试时依赖 testCompile
testCompile("junit","junit","4.8.1")
}
8、解决依赖冲突
Gradle会自动依赖更高版本的包,如果想手动依赖低版本的包,可以用exclude方法移除三方依赖,如下:
dependencies{
compile(kotlin("stdlib"))
//依赖管理
//gradle会自动下载三方的依赖包
compile("commons-httpclient","commons-httpclient","3.1")
//解决依赖冲突
//1、Gradle自动依赖高版本 commons-logging->1.2
//2、手动解除依赖
compile("org.springframework","spring-core","4.3.9.RELEASE"){
exclude("commons-logging","commons-logging")
}
}
五、我的GradleKotlin Demo链接
https://github.com/ChangerD/Kotlin-Gradle.git
到这大家应该极大概率成为各公司的Kotlin-Gradle编程的第一人,应该基本已经了解怎么用Kotlin开发Gradle工程了,关于Android工程的Gradle改造,我会在下一次更新文章,我想聪明的小伙伴们已经Get到技能了,自己改一个Android工程的Gradle也不再话下,换汤不换药。Good bye!
(第一次写文章,各位大佬级别的发现问题,还请指教)