使用Kotlin代替Groovy編寫Gradle

有沒有小老弟學(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)問題,還請指教)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末护侮,一起剝皮案震驚了整個濱河市敌完,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌羊初,老刑警劉巖滨溉,帶你破解...
    沈念sama閱讀 221,430評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異凳忙,居然都是意外死亡业踏,警方通過查閱死者的電腦和手機禽炬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評論 3 398
  • 文/潘曉璐 我一進店門涧卵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人腹尖,你說我怎么就攤上這事柳恐》ゲ保” “怎么了?”我有些...
    開封第一講書人閱讀 167,834評論 0 360
  • 文/不壞的土叔 我叫張陵乐设,是天一觀的道長讼庇。 經(jīng)常有香客問我,道長近尚,這世上最難降的妖魔是什么蠕啄? 我笑而不...
    開封第一講書人閱讀 59,543評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮戈锻,結(jié)果婚禮上歼跟,老公的妹妹穿的比我還像新娘。我一直安慰自己格遭,他們只是感情好哈街,可當(dāng)我...
    茶點故事閱讀 68,547評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著拒迅,像睡著了一般骚秦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上璧微,一...
    開封第一講書人閱讀 52,196評論 1 308
  • 那天作箍,我揣著相機與錄音,去河邊找鬼前硫。 笑死蒙揣,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的开瞭。 我是一名探鬼主播懒震,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼嗤详!你這毒婦竟也來了个扰?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,671評論 0 276
  • 序言:老撾萬榮一對情侶失蹤葱色,失蹤者是張志新(化名)和其女友劉穎递宅,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體苍狰,經(jīng)...
    沈念sama閱讀 46,221評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡办龄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,303評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了淋昭。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片俐填。...
    茶點故事閱讀 40,444評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖翔忽,靈堂內(nèi)的尸體忽然破棺而出英融,到底是詐尸還是另有隱情盏檐,我是刑警寧澤,帶...
    沈念sama閱讀 36,134評論 5 350
  • 正文 年R本政府宣布驶悟,位于F島的核電站胡野,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏痕鳍。R本人自食惡果不足惜硫豆,卻給世界環(huán)境...
    茶點故事閱讀 41,810評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望笼呆。 院中可真熱鬧够庙,春花似錦、人聲如沸抄邀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,285評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽境肾。三九已至剔难,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間奥喻,已是汗流浹背偶宫。 一陣腳步聲響...
    開封第一講書人閱讀 33,399評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留环鲤,地道東北人纯趋。 一個月前我還...
    沈念sama閱讀 48,837評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像冷离,于是被迫代替她去往敵國和親吵冒。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,455評論 2 359

推薦閱讀更多精彩內(nèi)容