Gradle 基础学习(一) 认识Gradle目录

Gradle Build Tool (也就是我们常说的Gradle)是一个基于JVM的快速、可靠、适应性强的自动化构建开源工具,拥有活跃的社区和强大的开发者生态系统,目前也是Android和Kotlin跨平台项目的默认构建系统。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,目前也提供了基于Kotlin语言的kotlin DSL。

Gradle当前支持的编程语言包括 Android, Java, Kotlin Multiplatform, Groovy, Scala, Javascript 和 C/C++等,未来计划支持更多的语言;

目前几乎所有主流的IDE都支持Gradle,比如Android studio, IntelliJ IDEA,Visual Studio Code,Eclipse, 和 NetBeans等。另外,Gradle也提供了命令行工具供开发者使用。

对于一个优秀的Android开发者,我们可以说天天会用到Gradle, 用它配置、应用插件、构建工程,所以有必要去深入理解Gradle的基本概念,比如 Gradle 生命周期、Project、Task 、Plugins等,学会后可以提高开发效率,甚至可以自己做一些自动化的插件,实现诸如代码生成、字节码插桩、代码优化等目标。

本系列文章主要是根据Gradle用户手册结合了自己的理解整理而来,希望能方便大家快速熟悉Gradle。

Gradle使用两个主目录来执行和管理它的工作:Project 根目录和Gradle User Home目录。

 

[ Gradle User Home目录 ]

默认位置为(~/.gradle 或者 WIndows C:\Users\<USERNAME>\.gradle) ,存储全局的配置属性、初始化脚本、缓存和日志文件。

可以设置作为环境变量GRADLE_USER_HOME的值,注意不要和GRADLE_HOME混淆了,后者是可选的表示Gradle的安装目录。

结构大致如下

 

①: 全局缓存目录,用于在多个项目之间共享构建脚本和依赖项,以加快构建速度。比如依赖项经编译后的输出就会存储到这里,如果在其他项目中使用了相同的依赖,那么Gradle可以重用这些输出,从而节省时间以加快构建速度。

②: 特定Gradle版本的缓存, 比如Project我们现使用的Gradle 8.2, 这里就会有一个8.2的目录,缓存了gradle程序的脚本。

③: 共享缓存,包含了 Gradle 下载的所有依赖项 JAR 文件的缓存。这些缓存的 JAR 文件可以在未来的构建中重复使用,从而加快了构建过程。

modules-2     存储的是每一个项目下面具体依赖项的jar包

jars-*             存储的是gradle依赖的文件;如kotlin-gradle-tooling.jar、groovy.jar等。

如果需要清理这些缓存,可以删除这目录中的内容。Gradle会在需要的时候重新下载和构建这些依赖项。

 

④: gradle守护进程的注册表和日志。

⑤: 全局初始化脚本。

⑥: 工具链支持的JDKs下载。

⑦: 由Gradle Wrapper下载的Gradle发行版, 比如Project中我们使用Gradle 8.2,这里就会多一个gradle-8.2-bin目录。

⑧: 全局Gradle配置属性。

另外,caches下还有transforms-*目录,用来存放比如modules-2中下载的依赖库aar文件解压后的输出产物。

依赖的cardview工件,下载后缓存在modules-2/files-2.1/目录下,然后aar文件解压到对应的transforms-1/files-1.1/中。

以上对我们而言最重要的就是modules-2,wrapper和gradle.properties了,其他的可以不理会。

【 Project根目录 】

这个目录下包含了项目的所有源文件,也包含了Gradle生成的文件和目录,例如.gradle和build。

.gradle通常会被添加进源代码控制中,build目录包含了构建的输出,以及Gradle用来支持增量构建等特性的临时文件。

结构大致如下

①: 由Gradle生成的项目专用缓存目录。

②: 特定Gradle版本的缓存。

③: 这个项目的构建目录,Gradle在其中生成所有的构建工件。

④: 包含Gradle Wrapper的JAR和配置文件。

gradle-wrapper.properties文件中申明了项目要使用的gradle版本,对应的gradle下载地址,以及保存位置。

distributionBase=GRADLE_USER_HOME
distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME

这里就可以看到会下载gradle-8.2-bin.zip,然后存放到.gradle/wrapper/dists/gradle-8.2-bin/md5hash目录下。bin和all的区别就是后者带源码。 

⑤: 项目专用的Gradle配置属性。

⑥: 使用Gradle Wrapper执行构建的脚本。

⑦: 项目的设置文件,其中定义了子项目列表。

⑧: 通常,一个项目被组织成一个或多个子项目。

⑨: 每个子项目都有自己的Gradle构建脚本。

在项目构建中,我们主要还是和Project目录打交道,其中主要关注settings.gradle(.kts)、build.gradle(.kts)、gradle.properties以及SubProject的build.gradle(.kts)即可。 

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值