Gradle

ops/2024/9/23 22:58:36/

Gradle

1.Gradle是什么

官话:Gradle 是一种先进的构建工具,它被广泛应用于 Android 开发。Gradle 提供了强大的构建功能、灵活的配置和丰富的插件生态。

2.基本概念

在了解 Gradle 的用法之前,首先需要了解以下基本概念:

Project:Gradle 构建的基本单位,通常对应一个工程。
Task:Gradle 构建的操作单位,用于执行具体的构建任务,如编译、打包等。
Build Script:Gradle 构建脚本,使用 Groovy 或 Kotlin DSL 编写,用于配置构建过程。
Plugin:Gradle 插件,用于扩展构建功能和简化构建配置。

3.项目级构建脚本

kotlin">// Top-level build file where you can add configuration options common to all sub-projects/modules.buildscript {repositories {google()jcenter()}dependencies {classpath 'com.android.tools.build:gradle:4.1.0'}
}allprojects {repositories {google()jcenter()}
}task clean(type: Delete) {delete rootProject.buildDir
}

buildscript:配置构建脚本的依赖,如 Android Gradle 插件。
repositories:配置依赖库的仓库,如 Google Maven 仓库和 JCenter 仓库。
allprojects:配置所有子项目(模块)的设置,这些设置将应用于所有子项目。
task:定义自定义任务,如 clean 任务用于删除项目的构建输出。

4.Gradle任务的创建、配置、依赖、执行

在Gradle中,任务(Task)是构建过程的基本单位。任务可以执行各种操作,如编译代码、运行测试、打包应用、发布工件等。Gradle的任务系统非常灵活,允许你创建和配置自定义任务,并定义任务之间的依赖关系。

4.1创建

使用 task 关键字
这是创建任务的最常见方法。你可以使用 task 关键字定义一个简单的任务,并使用 doLast 或 doFirst 配置任务的行为。

kotlin">task hello {doLast {println 'Hello, Gradle!'}
}

4.2配置

你可以使用 doLast 和 doFirst 方法配置任务在执行时的具体行为。

kotlin">task example {doFirst {println 'This is the first action.'}doLast {println 'This is the last action.'}
}

配置任务的属性

kotlin">task example {group = 'Custom'description = 'An example task'doLast {println 'Executing example task'}
}

4.3依赖

你可以定义任务之间的依赖关系,以确保任务按特定的顺序执行。

kotlin">task taskA {doLast {println 'Executing taskA'}
}task taskB {dependsOn taskAdoLast {println 'Executing taskB'}
}

在这个示例中,执行 taskB 时会先执行 taskA。

4.4执行

要执行任务,可以使用 gradle 命令行工具。以下是一些常用的命令:

kotlin">1. 列出所有任务:gradle tasks
2. 执行单个任务:gradle hello
3. 执行夺冠和任务:gradle clean build

gradle_105">5.常见gradle命令

你可以使用 Gradle 命令来执行构建任务,如编译、打包、安装、运行等。以下是一些常用的 Gradle 命令:

kotlin">./gradlew tasks:列出所有可用的任务。
./gradlew assemble:编译并打包所有构建变体的 APK 文件。
./gradlew assembleDebug:编译并打包 debug 构建变体的 APK 文件。
./gradlew installDebug:编译、打包并安装 debug 构建变体的 APK 文件。
./gradlew clean:清除项目的构建输出。

gradle_115">6.gradle插件基础使用

在项目级 build.gradle 文件中,添加插件的依赖:

kotlin">buildscript {dependencies {classpath 'com.example:my-gradle-plugin:1.0.0'}
}

在模块级 build.gradle 文件中,应用插件:

kotlin">apply plugin: 'com.example.my-gradle-plugin'

gradlemaven_130">7.gradlemaven仓库

7.1使用 Gradle 发布 Maven 仓库(本地)

(1).配置仓库:在 Gradle 构建脚本(build.gradle)中,你需要指定 Maven 仓库的位置。这可以是一个公共仓库(如 Maven Central、JCenter 等)或私有仓库。例如,要添加 Maven Central 仓库,可以在项目级别的 build.gradle 文件中添加以下内容:

kotlin">allprojects {repositories {mavenCentral()}
}

(2).声明依赖:在模块级别的 build.gradle 文件中,你需要声明项目所需的依赖库。Gradle 会根据这些声明从配置的 Maven 仓库中下载相应的依赖库。例如,要添加一个名为 com.example.library:library-name:1.0.0 的依赖库,可以在 build.gradle 文件中添加以下内容:

kotlin">dependencies {implementation 'com.example.library:library-name:1.0.0'
}

(3).解析依赖:当你运行 Gradle 构建任务时,Gradle 会解析项目中声明的所有依赖库。这包括检查依赖库的版本、下载依赖库以及处理潜在的依赖冲突。

(4).下载依赖:Gradle 会从配置的 Maven 仓库中下载所需的依赖库,并将它们缓存到本地。这样,在以后的构建过程中,Gradle 可以直接从本地缓存加载这些依赖库,而无需再次从 Maven 仓库下载。

(5).构建项目:Gradle 根据项目配置和下载的依赖库执行构建任务,如编译、打包、测试等。在这个过程中,Gradle 会自动处理依赖库之间的关系,确保项目正确地链接到所需的库。

7.2 如何依赖和发布本地 Maven 仓库

要在 Gradle 中依赖本地 Maven 仓库并发布项目到本地 Maven 仓库,你可以按照以下步骤操作:
(1).依赖本地 Maven 仓库
在项目级别的 build.gradle 文件中,添加本地 Maven 仓库的配置。本地 Maven 仓库默认位于用户主目录下的 .m2/repository 文件夹。以下是配置示例:

kotlin">allprojects {repositories {mavenLocal()mavenCentral()}
}

(2).发布项目到本地 Maven 仓库
要将项目发布到本地 Maven 仓库,你需要在项目的 build.gradle 文件中应用 maven-publish 插件并配置发布任务。以下是配置示例:
首先,在模块级别的 build.gradle 文件中,应用 maven-publish 插件

kotlin">apply plugin: 'maven-publish'

接下来,配置发布任务。确保指定项目的 groupId、artifactId 和 version:

kotlin">publishing {publications {maven(MavenPublication) {// 根据实际情况修改这些值groupId 'com.example'artifactId 'library-name'version '1.0.0'// 如果项目是一个 Android 库,添加以下内容from components.release}}
}

(3).完成这些配置后,你可以运行以下命令将项目发布到本地 Maven 仓库:
./gradlew publishToMavenLocal
(4).命令执行成功后,项目将被发布到本地 Maven 仓库(默认位于用户主目录下的 .m2/repository 文件夹)。
现在,你可以在其他项目中使用本地 Maven 仓库中的依赖库。只需在项目的 build.gradle 文件中添加对应的依赖项,例如:

kotlin">dependencies {implementation 'com.example:library-name:1.0.0'
}

7.2使用 Gradle 发布 Maven 仓库(远程)

kotlin">publishing {repositories {maven {url "远程仓库地址"credentials {username = "xxx"password = "xxx"}}}
}

http://www.ppmy.cn/ops/98677.html

相关文章

24暑假算法刷题 | Day39 | 动态规划 VII | LeetCode 198. 打家劫舍,213. 打家劫舍 II,337. 打家劫舍 III

目录 198. 打家劫舍题目描述题解 213. 打家劫舍 II题目描述题解 337. 打家劫舍 III题目描述题解 打家劫舍的一天 😈 198. 打家劫舍 点此跳转题目链接 题目描述 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷…

大话设计模式解读06-原型模式

上篇文章,介绍了《大话设计模式》的第8章——工厂方法。 本篇,来介绍《大话设计模式》的第9章——原型模式。并通过C代码实现实例代码的功能。 1 原型模式 原型模式(Prototype):用原型实例指定创建对象的种类&#x…

【Java】从零到一使用Feign与Sentinel (详细图解)

Java系列文章目录 补充内容 Windows通过SSH连接Linux 第一章 Linux基本命令的学习与Linux历史 文章目录 Java系列文章目录一、前言二、学习内容:三、问题描述四、解决方案:4.1 认识依赖4.1.1 Feign依赖4.1.2 Sentinel依赖4.1.3 负载均衡依赖4.2 父子项目…

小程序-公告滚动

<view class"bg_box icon_nav_box" style"margin-top: -70rpx;position: relative;"><view class"flex flex_y_center"><view class"c_red f32" style"font-style: italic;flex-shrink:0 ;">最新公告<…

【Leetcode 1805 】 字符串中不同整数的数目—— 双指针

给你一个字符串 word &#xff0c;该字符串由数字和小写英文字母组成。 请你用空格替换每个不是数字的字符。例如&#xff0c;"a123bc34d8ef34" 将会变成 " 123 34 8 34" 。注意&#xff0c;剩下的这些整数为&#xff08;相邻彼此至少有一个空格隔开&am…

【PGCCC】PostgreSQL中的内存表架构与实现

在数据库系统中&#xff0c;内存表&#xff08;In-Memory Tables&#xff09;作为一种高效的数据存储方式&#xff0c;可以显著提升数据库的响应速度&#xff0c;特别是在需要频繁读写的场景下。PostgreSQL作为一款功能强大的开源数据库&#xff0c;也为我们提供了创建和使用内…

淘宝(天猫)商品详情数据接口在自有电商平台的应用!

在电商市场的日益成熟下&#xff0c;越来越多的电商参与者上线了自主研发的电商平台。这主要是因为&#xff0c;在电商销售中&#xff0c;品牌在自有电商平台售卖商品的优势颇多&#xff1a; 自有的电商平台能够赋予品牌更大的灵活性和自由度等&#xff0c;品牌商品销售时无需…