Gradle 简单入门

发布时间:2023年12月20日

Gradle简单介绍:

Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,也增加了基于Kotlin语言的kotlin-based DSL,抛弃了基于XML的各种繁琐配置。面向Java应用为主。当前其支持的语言C++、Java、Groovy、Kotlin、Scala和Swift,计划未来将支持更多的语言。

Gradle是一个基于JVM的构建工具,是一款通用灵活的构建工具,支持maven,Ivy仓库,支持传递性依赖管理,而不需要远程仓库或者是pom.xml和ivy.xml配置文件,基于Groovy,build脚本使用Groovy编写。

此外,Gradle支持局部构建。

官网:Gradle Build Tool

为什么选择Gradle :?格拉德尔 |Gradle 与 Maven 比较

兼容性:兼容性矩阵 (gradle.org)

?Gradle安装:格拉德尔 |安装 (gradle.org)

版本选择:Gradle | Releases

下载后解压zip文件 ,添加到系统环境变量? ?测试 cmd :? gradle

构建项目时 用自己下载的Gradle:

Gradle的灵魂project和task

Gradle 本身的领域对象主要有Project 和 Task

Project 为Task 提供了执行的容器 和上下文

Task 添加自定义任务 在 build.gradle.kts 添加代码

task("sayHello") {
    println("hello Gradle")
}

编译器执行任务:

PS E:\kotlinTest\GradleTest> gradle sayHello

> Configure project :
hello Gradle

BUILD SUCCESSFUL in 1s
?

Gradle 添加依赖示例:

?从网络加载图片保存到本地

build.gradle.kts 文件:

    // https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp
    implementation("com.squareup.okhttp3:okhttp:4.10.0")
//去哪里下载
repositories {
    mavenCentral()
}

dependencies {
    testImplementation(platform("org.junit:junit-bom:5.9.1"))
    testImplementation("org.junit.jupiter:junit-jupiter")

    // https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp
    implementation("com.squareup.okhttp3:okhttp:4.10.0")

    implementation(kotlin("stdlib-jdk8"))

}

代码:

package org.example

import okhttp3.*
import java.io.File
import java.io.FileOutputStream
import java.io.IOException
import java.io.InputStream


fun main(args: Array<String>) {
    // 创建一个 OkHttpClient 实例
    val okHttpClient = OkHttpClient()
 
    // 使用 okHttpClient 发送请求...
    val request = Request.Builder()
        .url("https://pic.616pic.com/photoone/00/04/07/618ce5e7968227656.jpg")
        .build()

    okHttpClient.newCall(request).enqueue(object : Callback {
        override fun onFailure(call: Call, e: IOException) {
            // 请求失败处理...
        }

        override fun onResponse(call: Call, response: Response) {
            // 请求成功处理响应...

            val inputStream = response.body?.byteStream()
            if (inputStream != null) {
                // 创建输出文件
                // 调用函数将字节流转换为图片文件并保存到本地
                convertByteStreamToImageAndSave(inputStream, "demo.jpg")

                println("Image downloaded and saved to ")
            } else {
                println("Failed to get input stream")
            }


        }
    })
}


fun convertByteStreamToImageAndSave(byteStream: InputStream, outputPath: String) {
    // 创建输出文件
    val outputFile = File(outputPath)

    // 创建输出流
    val outputStream = FileOutputStream(outputFile)

    // 将字节流写入输出流
    byteStream.use { inputStream ->
        inputStream.copyTo(outputStream)
    }

    // 关闭输出流
    outputStream.close()

    println("Image saved to $outputPath")
}

简单测试案例:

Gradle依赖冲突的解决 排除依赖

    // https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp
    implementation("com.squareup.okhttp3:okhttp:4.10.0"){
        exclude("com.squareup.okhttp3","okhttp")
    }

Gradle插件自定义扩展?任务类型 Task types?

参考文档 Task - Gradle DSL Version 8.5? ? ? Task types?

?用Kotlin 语法 删除文件???在 build.gradle.kts 添加代码

Delete用法?示例?

//Task 添加自定义任务 删除文件
task("myDeleteFile",Delete::class) {
    setDelete("src/temp")
}

Copy 用法?示例?

//Task  拷贝文件
task("myCopyFile",Copy::class) {
    from("src")
    into("new")
}

Jar?示例?

//Task 添加自定义任务 拷贝文件
task("myJar",Jar::class) {
    from("src")
    into("abd.jar")
}

Gradle的学习方法

GitHub - gradle/kotlin-dsl-samples:使用 Gradle Kotlin DSL 的示例构建

文章来源:https://blog.csdn.net/jiayou2020527/article/details/135092163
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。