简介
Gradle 是一个支持多语言的构建工具,并且可以与大多数IDE 集成
使用并发和缓存机制构建,使得效率较高。
参考资料
使用方式
1、使用 gradle
通用 Gradle 二进制 压缩包下载解压配置环境变量,也可以使用软件仓库安装 例如 brew install gradle
2、使用 gradle wrapper
gradle wrapper 的命令为 gradlew,gradlew 会依据gradle-wrapper.properties 配置的gradle 版本来构建项目,当配置的gradle 版本不存在,会自动安装。gradle wrapper 一般和项目文件一起使用 (如下图),并且添加到版本管理中,使得开发项目的gradle 构建版本一致。
gradle wrapper.png
gradle-wrapper.properties 配置
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
3、gradle 与gradlew 区别
-
gradlew 会调用 gradle-wrapper.properties 配置的gradle版本进行项目构建。如果配置的gradle 版本不存在,会自动下载
-
gradlew 调用 gradle 进行项目构建
-
gradlew 命令与 gradle 命名可以替换使用,区别是他们使用的gradle 版本依据配置可能不一样
4、IDEA 导入 gradle 项目
File —>new —> project from exists source —>gradle —finish
idea 构建成功后,会自动设置sourceSet ,module。如果module,sourceSet 没有自动设置,可能是由于编译或者构建失败
相关文件与配置
1、gradle 安装目录
含有gradle.properties ,bin/gradle 执行文件
2、用户目录 (USER_HOME/.gradle)
USER_HOME/.gradle.png
1、该目录为gradle wrapper 下载 gradle 安装目录
2、gradle.properties 为属性配置文件
3、init.gradle 为初始化配置文件,比如仓库镜像全局配置。
init.gradle 替换国内仓库,如果没有该文件,可以新建到这个位置
allprojects {
repositories {
def ALIYUN_REPOSITORY_URL = 'https://maven.aliyun.com/repository/public/'
def ALIYUN_JCENTER_URL = 'https://maven.aliyun.com/repository/jcenter/'
def ALIYUN_GOOGLE_URL = 'https://maven.aliyun.com/repository/google/'
def ALIYUN_GRADLE_PLUGIN_URL = 'https://maven.aliyun.com/repository/gradle-plugin/'
all { ArtifactRepository repo ->
if(repo instanceof MavenArtifactRepository){
def url = repo.url.toString()
if (url.startsWith('https://repo1.maven.org/maven2/')) {
project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_REPOSITORY_URL."
remove repo
}
if (url.startsWith('https://jcenter.bintray.com/')) {
project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_JCENTER_URL."
remove repo
}
if (url.startsWith('https://dl.google.com/dl/android/maven2/')) {
project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_GOOGLE_URL."
remove repo
}
if (url.startsWith('https://plugins.gradle.org/m2/')) {
project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_GRADLE_PLUGIN_URL."
remove repo
}
}
}
maven { url ALIYUN_REPOSITORY_URL }
maven { url ALIYUN_JCENTER_URL }
maven { url ALIYUN_GOOGLE_URL }
maven { url ALIYUN_GRADLE_PLUGIN_URL }
}
}
3、项目目录
project.png
1、含有gradle wrapper 相关文件 gradle/wrapper ,gradlew(gradlew.bat)
2、含有项目构建配置Script ,setting.gradle,build.gradle
4、属性配置与脚本配置
属性配置
- 环境变量
- gradle.properties :用户目录,项目目录,安装目录
- gradle 读取所有配置,并且合并配置
Script 配置
- initScript :init.gradle (用户目录) ,接口来源 Gradle +Script
- buildScript : build.gralde(项目目录),接口来源Project +Script
- settingScript :setting.gradle , 接口来源 Settings+Script
Repositories
1、支持类型ivy,maven,flat
2、默认maven 仓库
mavenCentral()
jcenter()
google()
mavenLocal() 本地缓存USER_HOME/.m2
自定义仓库地址
maven {
url "https://maven.springframework.org/release"
}
3、自定义过滤支持
由于可以使用groovy 脚本,可以轻松实现一些 过滤,排除依赖这样的定义
命令
语法
gradle [taskName...] [--option-name...]
taskName 说明
1、多个名称是空格隔开,在多项目中,task 需要添加项目前缀 ,例如 :mySubproject:taskName
2、task 具有依赖关系,比如下图执行 gradle dist ,那么compile ,compileTest,test task 都会执行 ,可以使用-x 排除任务
Tasks.png
3、task来源 :
- 内置通用 build,run,check,clean,projects,tasks,dependencies,
- 插件定义task 比如: java ,groovy
- 脚本定义 :task taskName {}
option-name说明
1、用=赋值 --console=plain
2、开关选项 --build-cache,--no-build-cache
插件
插件提供默认行为的一系列功能(Task)
例如Java 插件:构建Java 项目
Tasks:
compileJava
compileTestJava
processResources
jar
javadoc
test
uploadArchives
clean
cleanTaskName
....
使用 script 配置
plugins {
id 'java'
}
网友评论