网站链接: element-ui dtcms
当前位置: 首页 > 技术博文  > 技术博文

kotlin编写gradle

2021/6/25 16:25:44 人评论

kotlin编写gradle gradle是一种自动化构建工具(编译,测试,打包等功能) 第一版gradle由groovy语言编写,现选择kotlin语言 动态语言(python,groovy,javascript):需要有相应的动作来认定这个函数是干嘛的&a…

kotlin编写gradle

gradle是一种自动化构建工具(编译,测试,打包等功能)

第一版gradle由groovy语言编写,现选择kotlin语言

动态语言(python,groovy,javascript):需要有相应的动作来认定这个函数是干嘛的,运行的时候才知道
静态语言(kotlin,java):不需要了解其他的,创建就能知道它是什么,做什么用的(编译的时候就能知道)

idea新建gradle工程,使用kotlin语言的名称以kts为后缀的

设置kolin与java得混合调用

plugins {
application
//    添加kotlin代码与java代码的共存使用,需要设置版本
    kotlin("jvm") version "1.3.61"

}
application{
    mainClassName = "Main"
}
//添加kotlin的依赖
dependencies{
    implementation(kotlin("stdlib"))
}

//依赖的仓库位置
repositories{
    jcenter()
}

gradle得projec和task

gradle本身得领域对象主要是project和task
project为task提供执行得容器和上下文

//gradle中写入helloworld任务
task("helloworld",{
println("hello i am gradle helloworld")
}

Task生命周期

1.扫描
2.执行

task("opendoor",{
        //扫描时执行
    //    println("打开冰箱门")
        //当任务运行的时候执行
        doFirst {
        println("打开冰箱门")
        }
        //当任务运行的时候执行
    //    doLast {
    //        println("在运行时执行的函数")
    //    }

    })
task("putelephant",{
    doFirst {
        println("放入大象")
    }
    //扫描时执行
//    println("放入大象")
}).dependsOn("opendoor")
task("closedoor",{
    doFirst {
    println("关闭冰箱门")
    }
    //扫描时执行
//    println("关闭冰箱门")
}).dependsOn("putelephant")

Tasks任务集

存储着直接命名处理的任务

tasks {
    "opendoor"{
    }
    "putelephant"{
        dependsOn("opendoor")
    }
    "closedoor"{
        dependsOn("putelephant")
    }
}

project

project中存储着gradle的默认配置,特殊情况可以修改

//project
task("print", {
    //获取gradle的配置信息
    project.properties.forEach { t, any -> kotlin.io.println("$t:$any") }

})
//默认执行任务,运行gradle直接运行的
defaultTasks("print")

gradle的增量式更新任务

当文件没有发生改变的时候,gradle不会去发生编译,操作

plugins {
    java
}
//记录所有源代码的文件名称
task("getsrcname",{
    //检查输入和输出有没有变化,如果没有变化gradle就不会更新
    //指定输入的文件夹名称
    inputs.dir("src")
//    指定输出的文件名称
    outputs.file("info.txt")
    doFirst {
        //获取文件树
        var srcdir = fileTree("src")
        //创建文件存储文件名
        var infotxt = file("info.txt")
        //情况
        infotxt.writeText("")
        srcdir.forEach {
            if (it.isFile){
                //设置延时
                Thread.sleep(1000)
                //获取文件地址,写到文件中
                infotxt.appendText(it.absolutePath)
                infotxt.appendText("\r\n")
            }
        }
    }

})

gradle的依赖管理

1.介绍

dependencies//依赖管理空间
complie//已过时依赖
implementation//依赖
//依赖可以下载需要的所有的jar包
dependencies {
    compile("stblib")
    implementation("stblib")
//(“包名:表示项目的组织”,“项目名称”,“jar包的版本”)
 implementation ("com.google.android.material","material","1.0.0")   
}

2.依赖冲突解决

dependencies {
implementation(kotlin("stdlib"))
//    implementation ("com.google.android.material","material","1.0.0")
    implementation ("androidx.appcompat","appcompat","1.0.2"){
        //去除一下的依赖
        exclude("包名","名称")
    }

}

repositories{
    maven("https://www.jitpack.io")
    jcenter()
}

gradle的扩展

文档地址:https://docs.gradle.org/6.7/dsl/index.html

学习的sample地址:https://github.com/gradle/kotlin-dsl-samples/tree/master/samples#readme

相关资讯

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?