Gradle解决的问题,解决交付的速度构建不一致的软件。
特点:灵活约定,具有表达性的语言和强大的api.
鲁棒性和强大的依赖管理
可扩展的构建
Gradle wrapper
Wrapper 其实就是对gradle的一层包装,便于在团队开发过程中gradle 构建的版本统一
Gradle wrapper 命令自动生成相关的目录与文件
gradlew 和 gradJew.bat 分别是 Linux 和 Windows 下的可执行脚本 , 它们的用法和 Gradle
原生命令是一样的, Gradle 怎么用,它们也就可以怎么用 。 gradle-wrapper.jar 是具体业务逻辑
实现的 jar 包, gradlew 最终还是使用 Java 执行的这个 jar 包来执行相关 Gradle 操作 。
gradle-wrapper.properties 是配置文件,用 于配置使用 哪个版本的 Gradle 等 , 稍后会详细讲解 。
这些生成的 Wrapper 文件可以作为你项目工程的一部分提交到代码版本控制系统里( Git ) ,
这样其他开发人员就会使用这里配置好的、统一的 Gradle 进行构建开发
项目结构的约定
Api 解析
Project的属性api
因为project中 第一个属性就是 ,默认的文件名,不可修改Build.Gradle
扩展属性:
Ext{
}
Buildscript依赖相关
SourceSet
构建结构
三个基本的构建块:project,task,property.每个构建至少包含一个project,包含多个task
包装器
定制包装器
setting文件
用户于初始化以及工程树的配置,文件名为setting.gradle
setting.gradle作用配置子工程,
2 project与tasks
可以有许多project,Project可以包含多个tasks,task是一个操作,一个原子操作。比如打包,复制文件,一次编译,等同于maven 中的goal.
创建一个任务。
Task task1
{
doLast{
println ‘helloworld!’
}
}
运行task, gradle task1
任务task
任务之间可以有依赖关系
内置task类型
以任务的名字创建任务
例如:Task task(String name)
任务名字+一个对该任务配置的map对象来创建任务
Def Task task1=task(task1,group:BasePlugin.BULD_GROUP)
任务名+闭包的配置方式
Task ex41{
Description ‘description’
doFirst {
Println ‘创建’
}
}
任务分组与描述
操作符“《《”
在gradle上是doLast方法的短标记形式
插件
应用第三方的插件,
第三方发布的作为jar的二进制插件,我们在应用额时候,必须要现在buildscript{} 里配置其classpath才能使用,这个不像gradle为 我们提供的内置插件,
Such as
Buldscript {
Repositories {
Jcenter()
}
Dependencies {
Classpath ‘com.android.tools.build:gradle:1.5.0’
}
}
应用插件:
Apply plugin: ‘com.android.application’
Gradle 本身提供一些基本的概念
和整体核心的框架,其他用于描述真实使用场景逻辑的都以插件扩展的方式来实现,这样的设
计可以抽象的方式提供一个核心的框架,其他具体的功能和业务等都通过插件扩展的方式来实
现
应用脚本插件:
依赖管理
Gradle dependencies显示完整的依赖树,gradle默认解决的版本冲突的策略是保留最新的版本
强制刷新第三方库
有一个功能不可避免的会依赖第三方库, 有的工具会有缓存,使用最新的需要强制刷新。
. /gradlew --refresh-dependencies assemble
排除传递性依赖
文件依赖
仓库配置
解决版本冲突
设置强制依赖
强制刷新依赖:
多项目构建
调用子项目的task
:subproject:ask
配置项目之间的依赖
跨项目的task依赖
配置子项目
任务分组与描述
Gradle tasks 查看任务的命令
<< 既是doLast方法的标记
插件
插件都是用project.Apply()这个方法来完成的,例如应用插件, apply plugin:’java’,插件都有一个短名称。Java 就是javaPlugin的短名称。
apply plugin: org.gradle.api.plugins.JavaPlugin
还可以写成 apply plugin:JavaPlugin.插件是实现了Plugin接口的简单类。
插件的作用,
- 将任务添加到项目中去
- 所有默认的设置对已经添加的任务进行预配置。
- 向项目中添加依赖配置
- 通过扩展对现有的类型添加新的属性和方法
Gradlew 生成的文件
运行gradle wrapper 生成gradlew 以及gradlew.bat 文件,以及在工程目录下面生成gradlew的相应的jar包以及配置文件。
wrapper {
gradleVersion='5.3.1'
distributionUrl='http://10.122.46.245:8081/repository/maven-releases/services/gradle/org/gradle/5.3.1/gradle-5.3.1-bin.zip'
}
问题
- gradlew 下载不下来,未指定gradle 版本,装私服