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 的示例构建