当前位置: 首页 > news >正文

gradle--问答

文章目录

  • gradle--问答
    • 问答
      • gradle源码在哪
      • gradle脚本里默认帮我们import了什么
      • gradle有哪些核心插件
      • 如何查看插件源码
      • 如何查看任务之间的依赖?
      • build.gradle里使用的插件的jar究竟放置在哪里?
      • 你会不会好奇在build.gradle里完全看不出springboot依赖的版本信息,那么版本管理具体是在哪里指定的呢?
      • 各个gradle文件是在哪个阶段被执行的呢
      • 如何获取gradle.properties的属性
    • 参考

gradle–问答

  • 本文收录了常见的关于gradle相关的疑惑,希望可以帮到你

问答

gradle源码在哪

  • 当我们在gradle-wrapper.properties中指定gradle版本后(注意gradle-xxx-all.zip才会下载源码,否则只是二进制包),同步时gradle就会自动帮我们下载
  • windows默认放置在:C:\Users(用户名).gradle\wrapper\dists

gradle脚本里默认帮我们import了什么

  • 可以查看官方说明:script-default-imports

gradle有哪些核心插件

  • gradle内置了很多核心插件,这些插件可以在gradle源码中找到,比如我们经常用到的java插件
apply plugin : java
  • 其在源码的路径为 \src\plugins\org\gradle\api\plugins\JavaPlugin.java
  • 都说到这里了,其他核心插件你还会不知道吗

如何查看插件源码

  • 这里以android为例
  • android的开发肯定对这个插件很熟悉
plugins {id 'com.android.application'
}
  • 在使用这个插件之前我们必须配置一下构建脚本的classpath,只有这样我们的gradle脚本才能找到com.android.application这个插件
buildscript {repositories {google()mavenCentral()}dependencies {classpath "com.android.tools.build:gradle:7.0.4"}
}
  • 从这里其实我们大概就可以猜到这个插件肯定是从classpath "com.android.tools.build:gradle:7.0.4"获取到的,那么我们便可以在依赖中加上它
dependencies {implementation 'androidx.appcompat:appcompat:1.4.0'...implementation 'com.android.tools.build:gradle:7.0.4'
}
  • 加完后同步一下,便可以看到多了这些
    在这里插入图片描述
  • 很快便能找到具体的插件实现类就是AppPlugin
    在这里插入图片描述

如何查看任务之间的依赖?

  • 命令行输入“gradle(w) taskname -m”,如gradlew build -m即可查看到任务build之前需要执行的任务列表。

build.gradle里使用的插件的jar究竟放置在哪里?

  • Mac系统默认下载到:/Users/(用户名)/.gradle/caches/modules-2/files-2.1
  • Windows系统默认下载到:C:\Users(用户名).gradle\caches\modules-2\files-2.1

你会不会好奇在build.gradle里完全看不出springboot依赖的版本信息,那么版本管理具体是在哪里指定的呢?

  • windows用户在C:\Users(用户名).gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-dependencies目录下可以找到答案,当我们打开spring-boot-dependencies-x.x.x.RELEASE.pom文件,版本信息一目了然
    在这里插入图片描述

各个gradle文件是在哪个阶段被执行的呢

  • setting.gradle是在初始化阶段执行,build.gradle是在配置阶段执行
  • 但build.gradle里的任务是有不同阶段的执行,如下
//build.gradle.kts
println("This is executed during the configuration phase.")tasks.register("configured") {println("This is also executed during the configuration phase, because :configured is used in the build.")
}tasks.register("test") {doLast {println("This is executed during the execution phase.")}
}tasks.register("testBoth") {doFirst {println("This is executed first during the execution phase.")}doLast {println("This is executed last during the execution phase.")}println("This is executed during the configuration phase as well, because :testBoth is used in the build.")
}

如何获取gradle.properties的属性

  • gradle.properties文件主要是存储键值对的
  • 如果想配置gradle系统的一些参数,可以查看官方说明:Build Environment
  • gradle.properties的键值对是全局的,在工程下的每个build.gradle或setting.gradle中都可以通过 ${xxx} 引用到,或者通过project.hasProperty(“xxx”)

参考

  • 从Android Plugin源码开始彻底理解gradle构建:初识AndroidDSL(一)_verymrq的博客-CSDN博客

相关文章:

  • 在 STM32 上使用 register 关键字
  • 如何访问云相关的api
  • python数据分析常用的10个核心库
  • 题海拾贝:P1833 樱花
  • vue3项目创建-配置-elementPlus导入-路由自动导入
  • 滑动窗口——水果成篮
  • Java后端快速生成验证码
  • 【NextPilot日志移植】params.c解析
  • 携程酒店 phantom-token token1004 分析
  • 什么是原码和补码
  • python中的进程锁与线程锁
  • 关于索引的使用
  • pe文件二进制解析(用c/c++解析一个二进制pe文件)
  • HTTP协议解析:Session/Cookie机制与HTTPS加密体系的技术演进(二)
  • 基于STM32、HAL库的PCM3060PWR 音频接口芯片驱动程序设计
  • UDP协议详细讲解及C++代码实例
  • 转发多台px4仿真UDP数据到地面站
  • KIVI: A Tuning-Free Asymmetric 2bit Quantization for KV Cache
  • sqlserver免费版每天备份数据库
  • 【计算机网络】3数据链路层②
  • 白玉兰奖征片综述丨动画的IP生命力
  • 四部门:强化汛期农业防灾减灾,奋力夺取粮食和农业丰收
  • 硅料收储挺价“小作文”发酵光伏板块罕见大涨,知情人士:确实在谈
  • 中保协发布《保险机构适老服务规范》,全面规范保险机构面向老年人提供服务的统一标准
  • 广东:十年后省级水网主骨架全面建成,与国家骨干网互联互通
  • 郑州通报涉“健康证”办理有关问题查处进展情况