一、前言
新一代构建工具,去除xml,采用groovy
二、Gradle安装
前提:基于jdk
(1)官网下载压缩包https://gradle.org/
(2)配置环境变量
GRADLE_HOME -> D:\gradle-4.6
GRADLE_USER_HOME -> D:\jar(这个类似于maven的.m2,就是用来存放公共用的jar)
path -> %GRADLE_HOME%\bin;
验证 -> gradle -v
三、Groovy
(1)简介
Groovy是用于java虚拟机的一种敏捷的动态语言,它是一种成熟的面向对象编程语言
既可以用于面向对象编程,又可以用作纯粹的脚本语言。使用该种语言不必编写过多的代码,
同时又具有闭包和动态语言中的其他特性
(2)与Java比较
Groovy完全兼容java的语法
分号时可选的
类、方法默认是public的
编译器给属性自动添加getter/setter方法
属性可以直接用点号获取
最后一个表达式的值会被作为返回值
==等同于equals(),不会抛出NullPointerExceptions
(3)高效的Groovy特性
assert语句、可选类型定义、可选的括号、字符串、集合API、闭包
======================================华丽的分割线======================================
四、项目解析
(1)创建项目
注:jdk1.8,安装好还报错,去file->settings find gradle,修改Gradle JVM路径为1.8即可
(2)菜单分析
(3)常用属性及方法
- group、name、version
- apply 运用插件,为project中一个方法
- dependencies 声明项目所依赖的jar包
- repositories jar来自的仓库地址
- task project中一个方法,声明项目中的任务(非必需的,使用插件即可)
任务对应org.gradle.api.Task主要包括任务动作和任务依赖。
任务动作定义了一个最小的工作单元。可以定义依赖于其他任务
动作序列和执行条件
方法:
dependsOn 声明任务依赖
doFirst、(doLast<<),一个任务可包含多个 - 属性的其他配置方式:ext、gradle.properties(键值对)
(4)构建生命周期
- 初始化
- 配置
task loadVersion{
project.version='1.0'
}
- 执行(doLast)
task loadVersion <<{
print 'success'
}
(5)依赖管理
(1)工件坐标
group、name、version
(2)仓库
mavenCentral、jcenter(公共仓库)、mavenLocal(本地)、自定义maven仓库(私服、公司内部使用)、文件仓库(文件路径、不推荐)
(3)依赖的传递性
B依赖A,如果C依赖B吗,那么C依赖A
就会产生版本的冲突
(4)依赖阶段配置
compile、runtime(编译、运行时)
testCompile、testRuntime
(5)解决jar包冲突
(1)查看依赖报告
(2)排除传递性依赖
(3)强制一个版本(gradle默认最高版本)
解决冲突
(1)排除传递性依赖
compile('org.hibernate:hibernate-core:3.6.3.Final'){
exclude group:"org.slf4j",module:"slf4j-api"
//transitive = false
}
(2)强制指定一个版本
configurations.all{
resolutionStrategy{
force 'org.slf4j:slf4j-api:1.7.24'
}
}