Gradle 是一款Google 推出的基于 JVM、通用灵活的项目构建工具,支持 Maven,JCenter 多种第三方仓库;支持传递性依赖管理、废弃了繁杂的xml 文件,转而使用简洁的、支持多种语言(例如:java、groovy 等)的 build 脚本文件。
官网地址: https://gradle.org/
官方下载地址:https://gradle.org/releases/
学习Gradle 的原因:
虽然目前常见的项目构建工具有Ant、Maven、Gradle,主流还是Maven,但是未来趋势可能是Gradle。
Ant: 2000 年 Apache 推出的纯Java 编写构建工具,通过 xml[build.xml]文件管理项目
Maven: 2004 年Apache 组织推出的再次使用xml 文件[pom.xml]管理项目的构建工具。
Gradle: 2012 年Google 推出的基于Groovy 语言的全新项目构建工具,集合了Ant 和 Maven 各自的优势。
gradle必须先安装JDK如未安装可参考:安装JDK
要求JDK 为 1.8 或者 1.8 版本以上为佳。
查看JDK版本
java -version
官方下载地址:https://gradle.org/releases/
变量名: GRADLE_HOME
变量值: E:\pgm\gradle-6.9.1(实际情况而定)
在Path变量中新建
:
%GRADLE_HOME%\bin
通过
gradle -v
来查看是否配置成功
显示版本号则安装成功
gradlew.bat—>包装器启动脚本
build.gradle—>构建脚本,类似于maven中的pom.xml
settings.gradle—>设置文件,定义项目及子项目名称信息,和项目是一一对应关系
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 这些远程仓库。
Gradle 中的依赖分别为直接依赖,项目依赖,本地jar 依赖。案例如下:
dependencies {
//①.依赖当前项目下的某个模块[子工程]
implementation project(':subject01')
//②.直接依赖本地的某个jar文件
implementation files('libs/foo.jar', 'libs/bar.jar')
//②.配置某文件夹作为依赖项
implementation fileTree(dir: 'libs', include: ['*.jar'])
//③.直接依赖
implementation 'org.apache.logging.log4j:log4j:2.17.2'
}
implementation group: ‘org.apache.logging.log4j’, name: ‘log4j’, version: ‘2.17.2’
group/name/version 共同定位一个远程仓库,version 最好写一个固定的版本号,以防构建出问题,implementation 类似
maven 中的依赖的scope,对比 maven 中的依赖:
<dependencies>
<dependency>
<groupId>log4jgroupId>
<artifactId>log4jartifactId>
<version>1.2.12version>
<scope>compilescope>
dependency>
dependencies>
项目依赖: 从项目的某个模块依赖另一个模块
implementation project(‘:subject01’)
这种依赖方式是直接依赖本工程中的libary module,这个 libary module 需要在setting.gradle 中配置。
本地jar 依赖:本地 jar 文件依赖,一般包含以下两种方式
//直接依赖某文件
implementation files('libs/foo.jar', 'libs/bar.jar')
//配置某文件夹作为依赖项
implementation fileTree(dir: 'libs', include: ['*.jar'])
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
地址是:北京啊啊:奥利给
allprojects 是对所有project(包括Root Project+ child Project[当前工程和所有子工程])的进行统一配置,而subprojects
是对所有Child Project 的进行统一配置。