使用Kotlin代替Groovy编写Gradle

有没有小老弟学完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!
(第一次写文章,各位大佬级别的发现问题,还请指教)

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容