有沒有小老弟學(xué)完Kotlin還想學(xué)Groovy?其實Gradle從4.1開始就支持Kotlin語言啦刷袍!學(xué)完Kotlin不僅可以代替Java語言開發(fā)Android,還可以順便代替Groovy編寫Gradle文件哦耸成!一種語言就能玩轉(zhuǎn)Android叛拷,懶人必備技術(shù)舌厨!
(注:還不會Kotlin的小老弟先去學(xué)一下Kotlin)那么廢話不多說,下面開始開車忿薇,請坐穩(wěn)裙椭。。煌恢。
一骇陈、創(chuàng)建一Gradle工程(這邊我們直接用Idea震庭,as的爸爸)
直接New一個Gradle的工程就可以了瑰抵,非常簡單。
二器联、Gradle版本配置(4.1及以上)
在工程目錄找到gradle文件夾二汛,里面有一個gradle-wrapper.properties
image
打開文件,內(nèi)容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,然后刪除里面原來的內(nèi)容,為了防止IDE出錯竟宋,建議重啟一下軟件
image.png
四提完、重頭戲:正式寫代碼
1、寫一個任務(wù)(Task)
其中最外面的代碼塊會在掃描時就運行了丘侠,有點像java的static代碼塊徒欣,然后doFirst和doLast代碼塊會
在Task運行的時候調(diào)用,doFirst在doLast之前蜗字。
task("myTask", {
//掃描時運行
println("scan")
//調(diào)用時運行
doFirst {
println("myTask")
}
doLast{
}
})
2打肝、運行任務(wù)
IDE的右側(cè)打開Gradle選項,找到Tasks->other->myTask挪捕,雙擊即可手動運行
image.png
3粗梭、任務(wù)依賴
如下代碼,myTask2運行的時候會首先運行myTask任務(wù)担神,再運行自己楼吃。
task("myTask2", {
//掃描時運行
println("scan")
//調(diào)用時運行
doLast {
println("two")
}
doFirst {
println("one")
}
}).dependsOn("myTask")
3、默認任務(wù)查看和配置
如下任務(wù)可以打印出Gradle工程的默認任務(wù)妄讯,工程運行的時候會自動運行默認任務(wù)孩锡,如果想把自己的任
務(wù)添加到默認任務(wù),直接用defaultTasks方法就可以亥贸,如下所示躬窜。
task("kown_default_task", {
project.properties.forEach { t, any ->
println("$t:$any")
}
})
//默認執(zhí)行任務(wù)配置
defaultTasks("myTask")
4、自定義插件拓展
想偷懶炕置,可以直接使用插件輔助完成一些任務(wù)荣挨,如下自定義插件拓展任務(wù),分別可以刪除文件朴摊,拷貝文件默垄,打包成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、調(diào)用外部拓展
沒有內(nèi)部拓展甚纲,想用外面拓展代碼口锭?沒有問題。介杆。鹃操。如下Main為Main.class的java代碼,classpath配置類文件的路徑春哨,"."為根目錄荆隘,就是工程的根目錄,具體目錄可以自己隨便設(shè)置赴背。
//調(diào)用外部拓展
task("useOutsideCode",{
doFirst({
javaexec{
main = "Main"
classpath(".")
}
})
})
5椰拒、配置插件
配上application插件晶渠,然后在application里面配上主類就可以運行,大家直接把gradle.build.kts清空然后
寫上下面幾句就可以直接run程序啦燃观,是不是非常簡單快速乱陡?(當(dāng)然如果有小老弟MainKt文件都沒有創(chuàng)建
就想運行,那是不可能的仪壮,還跑步起來就重裝系統(tǒng)吧憨颠,哈哈)
//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
到這大家應(yīng)該極大概率成為各公司的Kotlin-Gradle編程的第一人,應(yīng)該基本已經(jīng)了解怎么用Kotlin開發(fā)Gradle工程了虎锚,關(guān)于Android工程的Gradle改造硫痰,我會在下一次更新文章,我想聰明的小伙伴們已經(jīng)Get到技能了窜护,自己改一個Android工程的Gradle也不再話下效斑,換湯不換藥。Good bye柱徙!
(第一次寫文章缓屠,各位大佬級別的發(fā)現(xiàn)問題,還請指教)