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

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博客
http://www.xdnf.cn/news/6049.html

相关文章:

  • Vxworks 系统详解
  • Realtek 8126驱动分析第四篇——multi queue相关
  • vLLM Serve 命令参数详解
  • 小白成长之路-文件和目录内容检索处理(一)
  • 2025年项目管理软件哪个更流行?如何解决用例复用率低的难题?
  • write failed: Connection reset by peer
  • 抖音怎么快速涨粉(抖音推流算法研究)
  • python语言与地理处理note 2025/05/11
  • ArrayList的扩容机制
  • 基于脑功能连接组和结构连接组的可解释特定模态及交互图卷积网络|文献速递-深度学习医疗AI最新文献
  • 普通IT的股票交易成长史--20250513复盘
  • 收集卡牌 第23次CCF-CSP计算机软件能力认证
  • 大模型中的KV Cache
  • 开发者版 ONLYOFFICE 协作空间:3.1版本 API 更新
  • RabbitMQ学习(自用)
  • (顺序表、单链表、双链表)==>一篇解决!(Java版)
  • 【即插即用涨点模块】【上采样】CARAFE内容感知特征重组:语义信息与高效计算两不误【附源码】
  • MyBatis与MyBatis-Plus深度分析
  • SimpleAdmin云服务器发布
  • Qt —— 在Windows10下通过在线安装方式安装Qt6.9.0(附:“server replied: Forbidden“网络出错解决办法)
  • Pytorch张量和损失函数
  • 电子科技浪潮下的华秋电子:慕尼黑上海电子展精彩回顾
  • 反转链表II
  • mysql常用方法
  • 关于Go语言的开发环境的搭建
  • 组合问题(多条件)
  • Linux 系统安全基线检查:入侵防范测试标准与漏洞修复方法
  • C语言| 静态局部变量
  • 3级-运算符
  • 从数据中台到数据飞轮:实现数据驱动的升级之路