Gradle build.gradle 文件
- 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) }
}
需要注意的是:
- buildscript{}必须在 build.gradle 文件的最前端。
- 2.对于多项目构建,项目的 buildscript ()方法声明的依赖关系可用于其所有子项目的构建脚本。
- 构建脚本依赖可能是 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 文件相关推荐
- android gradle 设置 output文件名,Android gradle build 修改文件名称及目录
Android gradle build 修改文件名称及目录 android 在build的时候.输出apk的位置在于工程目录下的build文件夹下,名称也是固定的,但是在某些场景下需要对apk进行重 ...
- Gradle build.gradle配置
Gradle build.gradle配置 每个构建脚本build.gradle都有一个默认的Project的实例,脚本中所有的操作都在project实例的作用域 1 项目信息 项目信息指项目的坐标 ...
- build gradle settings 设置、读取变量
需求 可以在 settings.gradle, build.gradle 文件中读取 根据变量 控制编译流程(用什么路径了) 1. 新建gradle文件 好处:settings.gradle.buil ...
- Kotlin基础 build.gradle.kts常见问题之compile
网上有些视频教程讲解过程中,在讲解如何将Java和kotlin一起使用的时,在编辑build.gradle时,步骤如下: ① 修改build.gradle -> build.gradle.kts ...
- 【Android 修炼手册】Gradle 篇 -- Gradle 的基本使用
预备知识 基本的 android 开发知识 了解 Android Studio 基本使用 看完本文可以达到什么程度 掌握 gradle 的基本使用 了解 gradle 及 android gradle ...
- Android studio中2种build.gradle文件介绍
根目录下的build.gradle通常不需要修改这个文件中的内容,除非需要添加一些全局的项目构建配置 buildscript {repositories {google() //声明代码托管仓库Goo ...
- 【Android Gradle 插件】Gradle 映射文件 ( settings.gradle 映射为 Settings 类 | build.gradle 映射为 Project 类 )
文章目录 一.settings.gradle 映射为 Settings 类 二.build.gradle 映射为 Project 类 Android Plugin DSL Reference 参考文档 ...
- 【Android 安装包优化】使用 lib7zr.so 动态库处理压缩文件 ( 拷贝 lib7zr.so 动态库到 Android Studio 工程 | 配置 build.gradle 构建脚本 )
文章目录 一.拷贝 lib7zr.so 动态库到 Android Studio 工程 二.配置 Module 下的 build.gradle 构建脚本 三.参考资料 一.拷贝 lib7zr.so 动态 ...
- Gradle项目中gradle.build文件中的buildScript代码块
感谢原作者的劳动 在编写Gradle脚本的时候,在build.gradle文件中经常看到这样的代码: buildScript {repositories {mavenCentral()} }repos ...
最新文章
- CentOS 6.3 64bit上测试ATS 5.3.0中的正则刷新插件regex_revalidate
- 统计学习方法:朴素贝叶斯
- 美国诚实签经验——着装,戒指,手表装土豪,医生预约单,流水、房产和工作证明...
- idea工程本地依赖_IDEA最新版2020.1的maven工程本地依赖仓库无法使用问题(已解决)...
- 强势回归!比 Python 快 20% 的 Pyston v2.0 来了!
- WinForm窗体中如何在一个窗体中取到另一个窗体的值
- maven 常量字符串过长_从基于Maven的Web应用程序获取版本字符串
- 谈谈Angular关于$watch,$apply 以及 $digest的工作原理
- JavaScript在HTML中的应用2
- 功能测试点有哪些?怎么做好软件功能测试?
- (七)准备在云中训练深度伪造模型
- python+selenium,实现带有验证码的自动化登录功能
- 有以下程序C语言a b cdef,[工学]全国计算机二级笔试基础部分和C语言程序设计.doc...
- Redhat7.2下编译rpm包的形式安装openvswitch
- DirectAdmin面板在线解压缩的.tar.gz文件
- CMKY与RGB的转换
- MATLAB学习笔记——数组
- python爬取付费音乐包_python爬虫如何下载QQ音乐付费歌曲2020最新版
- 202007219 Oracle建表语句
- hdoj 1570 A C
热门文章
- 职称计算机承诺书,个人申报职称承诺书
- C语言实现扫雷游戏(自动排雷)
- MetaAI科学家解读最新模型:200+语言互译,千倍翻译数据,全球元宇宙用户自由交流...
- 基于LIRE的图像检索系统(C/S架构)
- centos查看IP地址及网关
- css详解position五种属性用法及其含义
- 嵌入式控制器的输入端口设计分析
- 利用nginx反向代理在内网服务器(无外网)下访问接口,视频,地图(一)
- 全球及中国双远心镜头行业研究及十四五规划分析报告
- 计算机专业刚毕业大学生,计算机专业应届毕业大学生自我鉴定-20210718000705.docx-原创力文档...