Gradle 简单入门

news/2024/5/20 4:03:25 标签: gradle, kotlin, 笔记

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


http://www.niftyadmin.cn/n/5275546.html

相关文章

【UML】第7篇 用例图(2/3)

目录 一、什么是用例&#xff08;Use Case&#xff09; 二、用例的识别 2.1 识别用例的思考方法 2.2 识别用例的注意事项 三、用例的命名 四、用例规约 五、用例的粒度处理 错误1&#xff1a;粒度过细 错误2&#xff1a;把步骤当用例 错误3&#xff1a;把活动当用例 …

德人合科技 | 公司电脑文件加密系统

公司电脑文件加密系统是一种可以对电脑文件进行加密的保护机制。它使用驱动层透明加密技术&#xff0c;能够在用户无感知的情况下对文件进行加密&#xff0c;从源头上保障数据安全和使用安全。 PC端访问地址&#xff1a; www.drhchina.com 此类系统主要有以下几个特点和功能&a…

LTD256次升级 |一分钟创建小程序官网 • 官网内容可在小程序分享

1、 商品关联表单支持上传图片&#xff1b; 2、 「我的咨询」新增快捷添加入口&#xff1b; 3、 极速官微新增官网内容分享页面&#xff1b;优化创建流程&#xff1b; 4、 极速官微支持编辑方式添加文章与产品&#xff1b; 5、 极速官微新增数据枢纽入口与网站设置页面&#xf…

Qt窗体常用属性设置

01 显示屏尺寸&#xff1a; QDesktopWidget 获取系统屏幕大小 QDesktopWidget* pDesktopWidget QApplication::desktop();//获取可用桌面大小 QRect deskRect QApplication::desktop()->availableGeometry(); //获取主屏幕分辨率 QRect screenRect QApplication::deskt…

通过GTM(google tag manager)安装GA(google analystics)

1&#xff0c;前提条件 有一个跟踪代码管理器&#xff08;GTM&#xff09;账号&#xff0c;一个谷歌分析&#xff08;GA&#xff09;账号 2&#xff0c;进入谷歌分析首页&#xff0c;点击左下角管理 3&#xff0c;点击右侧的数据流&#xff08;data streams&#xff09; 3&am…

@WebService和@WebMethod注解的用法

WebService 和 WebMethod 是 Java JAX-WS&#xff08;Java API for XML Web Services&#xff09;的注解&#xff0c;用于创建和配置基于 SOAP 的 Web 服务。它们的用法如下&#xff1a; WebService WebService 注解用于类级别&#xff0c;用于将一个类标识为一个 Web 服务端…

MIT_线性代数笔记:第 19 讲 行列式公式和代数余子式

目录 行列式公式 Formula for the determinant代数余子式 Cofactor formula 我们已经认识到了行列式的性质&#xff0c;应该推导出其公式了。 行列式公式 Formula for the determinant 行列式有如下三个性质&#xff1a; det( I )1。如果交换行列式的两行&#xff0c;则行列式…

图神经网络 (GNN) 概述

GNN 作者 with DALLE 3 一、说明 神经网络是受人脑工作启发的计算模型&#xff0c;能够从复杂的非结构化数据&#xff08;如图像、文本、音频和视频&#xff09;中学习。然而&#xff0c;还有许多其他类型的数据无法用传统的神经网络轻松表示&#xff0c;例如那些具有图形结构的…