• build.gradle 是一个 gradle 的构建脚本文件,支持 java、groovy 等语言。
  • 每个 project 都会有一个 build.gradle 文件,该文件是项目构建的入口,可配置版本、插件、依赖库等信息。
  • 每个 build 文件都有一个对应的 Project 实例,对 build.gradle 文件配置,本质就是设置 Project 实例的属性和方法。
  • 由于每个 project 都会有一个 build 文件,那么 Root Project 也不列外.Root Project 可以获取到所有 Child Project,所以在 Root Project 的 build 文件中我们可以对 Child Project 统一配置,比如应用的插件、依赖的 maven 中心仓库等。
  • build 文件中常见的属性和方法如下所示:

1、常见属性代码

//指定使用什么版本的JDK语法编译源代码,跟编译环境有关,在有java插件时才能用
sourceCompatibility = 1.8
//指定生成特定于某个JDK版本的class文件:跟运行环境有关,在有java插件时才能用
targetCompatibility = 1.8
//业务编码字符集,注意这是指定源码解码的字符集[编译器]
compileJava.options.encoding "UTF-8"
//测试编码字符集,注意这是指定源码解码的字符集[编译器]
compileTestJava.options.encoding "UTF-8"
//编译JAVA文件时采用UTF-8:注意这是指定源码编码的字符集【源文件】
tasks.withType(JavaCompile) { options.encoding = "UTF-8"
}
//编译JAVA文件时采用UTF-8:注意这是指定文档编码的字符集【源文件】
tasks.withType(Javadoc) { options.encoding = "UTF-8"
}

提示 1:group+name+version 类似于 maven 的 group+artifactId+version
提示 2:encoding 解决业务代码与测试代码中文乱码问题

2、Repositories

repositories { //gradle中会按着仓库配置的顺序,从上往下依次去对应的仓库中找所需要的jar包: //如果找到,则停止向下搜索,如果找不到,继续在下面的仓库中查找 //指定去本地某个磁盘目录中查找:使用本地file文件协议:一般不用这种方式 maven { url 'file:///D:/repos/mavenrepos3.5.4'} maven { url "$rootDir/lib/release" } //指定去maven的本地仓库查找 mavenLocal() //指定去maven的私服或者第三方镜像仓库查找 maven { name "Alibaba" ; url "https://maven.aliyun.com/repository/public" } maven { name "Bstek" ; url "https://nexus.bsdn.org/content/groups/public/" } //指定去maven的远程仓库查找:即 https://repo.maven.apache.org/maven2/ mavenCentral() //去google仓库查找 google()
}

因为 Gradle 没有自己的远程仓库,而是使用 Maven、jcenter、jvy、google 这些远程仓库。

3. Subprojects 与 Allprojects

allprojects 是对所有 project(包括 Root Project+ child Project[当前工程和所有子工程])的进行统一配置,而 subprojects 是对所有 Child Project 的进行统一配置。

allprojects { tasks.create('hello') { doLast { task ->println "project name is $task.project.name" } }
}
subprojects { hello.doLast{ task-> println "here is subprojects $task.project.name" }
}

通常在 subprojects 和 allprojects 中:

allprojects(){ //本质Project中的allprojects方法,传递一个闭包作为参数。 apply plugin: 'java' ext {junitVersion = '4.10' .. }task allTask{ ... }repositories { ... }dependencies { ... }
}
subprojects(){ …//同上面allprojects中的方法。
}

1: 如果是直接在 根 project 配置 repositories 和 dependencies 则 只针对根工程有效。
2: 我们也可以在对单个 Project 进行单独配置:

project('subject01') { task subject01 { doLast { println 'for subject01' } }
}

执行 gradle build 指令即可查看测试效果。

4、ext 用户自定义属性

Project 和 Task 都允许用户添加额外的自定义属性,要添加额外的属性,通过应用所属对象的 ext 属性即可实现。添加 之后可以通过 ext 属性对自定义属性读取和设置,如果要同时添加多个自定义属性,可以通过 ext 代码块:

//自定义一个Project的属性
ext.age = 18
//通过代码块同时自定义多个属性
ext {phone = 19292883833 address="北京"
}
task extCustomProperty { //在task中自定义属性 ext {desc = "奥利给" }doLast { println "年龄是:${age}" println "电话是:${phone}" println "地址是:${address}" println "口号:${desc}" }
}

测试:通过 gradle extCustomProperty
输出结果为:

年龄是:18
电话是:19292883833
地址是:北京
口号:奥利给

ext 配置的是用户自定义属性,而 gradle.properties 中一般定义 系统属性、环境变量、项目属性、JVM 相关配置 信息。例如 gradle.properties 文件案例:加快构建速度的,gradle.properties 文件中的属性会自动在项目运行时加载。

## 设置此参数主要是编译下载包会占用大量的内存,可能会内存溢出
org.gradle.jvmargs=-Xms4096m -Xmx8192m
## 开启gradle缓存
org.gradle.caching=true
#开启并行编译
org.gradle.parallel=true
#启用新的孵化模式
org.gradle.configureondemand=true
#开启守护进程
org.gradle.daemon=true

5、Buildscript

buildscript 里是 gradle 脚本执行所需依赖,分别是对应的 maven 库和插件。

import org.apache.commons.codec.binary.Base64
buildscript { repositories { mavenCentral() }dependencies { classpath group: 'commons-codec', name: 'commons-codec', version: '1.2' }
}
tasks.register('encode') { doLast { def byte[] encodedString = new Base64().encode('hello world\n'.getBytes())println new String(encodedString) }
}

需要注意的是:

  1. buildscript{}必须在 build.gradle 文件的最前端。
  2. 2.对于多项目构建,项目的 buildscript ()方法声明的依赖关系可用于其所有子项目的构建脚本。
  3. 构建脚本依赖可能是 Gradle 插件。

如下所示:

//老式apply插件的引用方式,使用apply+buildscript
buildscript { ext {springBootVersion = "2.3.3.RELEASE" }repositories { mavenLocal() maven { url 'http://maven.aliyun.com/nexus/content/groups/public' } jcenter() }//此处引入插件 dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") }
}
apply plugin: 'java' //核心插件,无需事先引入
apply plugin: 'org.springframework.boot' //社区插件,需要事先引入,才能应用,不必写版本号
asspath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") }
}
apply plugin: 'java' //核心插件,无需事先引入
apply plugin: 'org.springframework.boot' //社区插件,需要事先引入,才能应用,不必写版本号

Gradle build.gradle 文件相关推荐

  1. android gradle 设置 output文件名,Android gradle build 修改文件名称及目录

    Android gradle build 修改文件名称及目录 android 在build的时候.输出apk的位置在于工程目录下的build文件夹下,名称也是固定的,但是在某些场景下需要对apk进行重 ...

  2. Gradle build.gradle配置

    Gradle build.gradle配置 每个构建脚本build.gradle都有一个默认的Project的实例,脚本中所有的操作都在project实例的作用域 1 项目信息 项目信息指项目的坐标 ...

  3. build gradle settings 设置、读取变量

    需求 可以在 settings.gradle, build.gradle 文件中读取 根据变量 控制编译流程(用什么路径了) 1. 新建gradle文件 好处:settings.gradle.buil ...

  4. Kotlin基础 build.gradle.kts常见问题之compile

    网上有些视频教程讲解过程中,在讲解如何将Java和kotlin一起使用的时,在编辑build.gradle时,步骤如下: ① 修改build.gradle -> build.gradle.kts ...

  5. 【Android 修炼手册】Gradle 篇 -- Gradle 的基本使用

    预备知识 基本的 android 开发知识 了解 Android Studio 基本使用 看完本文可以达到什么程度 掌握 gradle 的基本使用 了解 gradle 及 android gradle ...

  6. Android studio中2种build.gradle文件介绍

    根目录下的build.gradle通常不需要修改这个文件中的内容,除非需要添加一些全局的项目构建配置 buildscript {repositories {google() //声明代码托管仓库Goo ...

  7. 【Android Gradle 插件】Gradle 映射文件 ( settings.gradle 映射为 Settings 类 | build.gradle 映射为 Project 类 )

    文章目录 一.settings.gradle 映射为 Settings 类 二.build.gradle 映射为 Project 类 Android Plugin DSL Reference 参考文档 ...

  8. 【Android 安装包优化】使用 lib7zr.so 动态库处理压缩文件 ( 拷贝 lib7zr.so 动态库到 Android Studio 工程 | 配置 build.gradle 构建脚本 )

    文章目录 一.拷贝 lib7zr.so 动态库到 Android Studio 工程 二.配置 Module 下的 build.gradle 构建脚本 三.参考资料 一.拷贝 lib7zr.so 动态 ...

  9. Gradle项目中gradle.build文件中的buildScript代码块

    感谢原作者的劳动 在编写Gradle脚本的时候,在build.gradle文件中经常看到这样的代码: buildScript {repositories {mavenCentral()} }repos ...

最新文章

  1. CentOS 6.3 64bit上测试ATS 5.3.0中的正则刷新插件regex_revalidate
  2. 统计学习方法:朴素贝叶斯
  3. 美国诚实签经验——着装,戒指,手表装土豪,医生预约单,流水、房产和工作证明...
  4. idea工程本地依赖_IDEA最新版2020.1的maven工程本地依赖仓库无法使用问题(已解决)...
  5. 强势回归!比 Python 快 20% 的 Pyston v2.0 来了!
  6. WinForm窗体中如何在一个窗体中取到另一个窗体的值
  7. maven 常量字符串过长_从基于Maven的Web应用程序获取版本字符串
  8. 谈谈Angular关于$watch,$apply 以及 $digest的工作原理
  9. JavaScript在HTML中的应用2
  10. 功能测试点有哪些?怎么做好软件功能测试?
  11. (七)准备在云中训练深度伪造模型
  12. python+selenium,实现带有验证码的自动化登录功能
  13. 有以下程序C语言a b cdef,[工学]全国计算机二级笔试基础部分和C语言程序设计.doc...
  14. Redhat7.2下编译rpm包的形式安装openvswitch
  15. DirectAdmin面板在线解压缩的.tar.gz文件
  16. CMKY与RGB的转换
  17. MATLAB学习笔记——数组
  18. python爬取付费音乐包_python爬虫如何下载QQ音乐付费歌曲2020最新版
  19. 202007219 Oracle建表语句
  20. hdoj 1570 A C

热门文章

  1. 职称计算机承诺书,个人申报职称承诺书
  2. C语言实现扫雷游戏(自动排雷)
  3. MetaAI科学家解读最新模型:200+语言互译,千倍翻译数据,全球元宇宙用户自由交流...
  4. 基于LIRE的图像检索系统(C/S架构)
  5. centos查看IP地址及网关
  6. css详解position五种属性用法及其含义
  7. 嵌入式控制器的输入端口设计分析
  8. 利用nginx反向代理在内网服务器(无外网)下访问接口,视频,地图(一)
  9. 全球及中国双远心镜头行业研究及十四五规划分析报告
  10. 计算机专业刚毕业大学生,计算机专业应届毕业大学生自我鉴定-20210718000705.docx-原创力文档...