Gradle系列【1】概述、安装、创建工程、目录介绍

有道无术,术尚可求,有术无道,止于术。

常用构建工具介绍

项目构建和管理需要工具,提供工程结构、代码编译打包、依赖管理、 二进制库管理等等功能,一般常用的有以下几种。

Ant

Ant 于2000年发布,是一个基于Java 开发的构建工具,Apache开源 ,但是用的人很少,几乎销声匿迹,感兴趣可以看看

Maven

官网地址

2004年发布,采用项目对象模型 (POM) 的概念,几乎国人开发都使用这个,但Maven烦冗的XML配置是它最大的缺点。

Gradle

官方文档
GitHub

2012年,应用于google的一款项目管理工具,集Ant、Maven二者之大成,越来越多的开发者都将项目迁移到了Gradle上,比如Spring 、Spring Boot等等。

Gradle概述

Gradle 是一个开源构建自动化工具,其设计足够灵活,可以构建几乎任何类型的程序。

以下是其一些最重要功能的高级概述:

  • 高性能:Gradle 实现了许多其他优化,构建速度快,开发团队不断努力提高 Gradle 的性能。
  • JVM基础:Gradle 在 JVM 上运行。
  • 扩展性:Gradle 支持插件机制,所以我们可以复用这些插件,就如同复用库一样简单方便。
  • IDE 支持:支持Android Studio、IntelliJ IDEA、Eclipse 和 NetBeans。Gradle 还支持生成将项目加载到 Visual Studio 所需的解决方案。
  • Gradle 是 Android 的官方构建工具,支持多种流行语言和技术。

缺点

  • 版本向下兼容性不是很好,目前新版为7.X版本
  • 学习成本高,需要学习groovy脚本语言

安装

可以在 Linux、macOS 或 Windows 上安装 Gradle 构建工具。

下载地址
在这里插入图片描述
下载后解压:
在这里插入图片描述
直接解压就行了,但是需要安装JDK1.8或更高版本,Gradle 带有自己的 Groovy 库,因此不需要安装 Groovy,Gradle 会忽略任何现有的 Groovy 安装,也就是使用内置的Groovy 。

添加环境变量GRADLE_HOME,变量值为解压目录。
在这里插入图片描述
在Path 中加入%GRADLE_HOME%\bin
在这里插入图片描述

输入gradle -v查看是否配置成功,很简单,和安装JDK一样。
在这里插入图片描述

使用IDEA 创建一个Gradle 项目

选择Gradle构建一个普通的JAVA Web 程序。
在这里插入图片描述

创建的工程目录如下:
在这里插入图片描述

Gradle 使用的目录和文件

Gradle 使用两个主要目录来执行和管理其工作:Gradle 用户主目录项目根目录

用户目录

用户目录在当前电脑登录的用户名目录下:
在这里插入图片描述
Gradle 用户主目录($USER_HOME/.gradle)用于存储全局配置属性和初始化脚本以及缓存和日志文件。大致结构如下:

├── caches // 全局缓存目录(适用于非项目特定的所有内容)
│   ├── 4.8 //特定于版本的缓存(例如,支持增量构建)
│   ├── 4.9 
│   ├── ⋮
│   ├── jars-3  // 共享缓存(例如,用于依赖项的工件)
│   └── modules-2 
├── daemon  // Gradle 守护进程的注册表和日志
│   ├── ⋮
│   ├── 4.8
│   └── 4.9
├── init.d  // 全局初始化脚本
│   └── my-setup.gradle
├── jdks // 工具链支持下载的JDK
│   ├── ⋮
│   └── jdk-14.0.2+12
├── wrapper
│   └── dists   // Gradle Wrapper下载的发行版
│       ├── ⋮
│       ├── gradle-4.8-bin
│       ├── gradle-4.9-all
│       └── gradle-4.9-bin
└── gradle.properties  // 全局Gradle 配置属性

从 4.10 版本开始,Gradle 会自动清理其用户主目录。当 Gradle 守护程序停止或关闭时,清理会在后台运行。

项目根目录

项目根目录大致结构如下:

├── .gradle  // Gradle 生成的项目特定缓存目录
│   ├── 4.8  // 特定于版本的缓存(例如,支持增量构建)
│   ├── 4.9 
│   └── ⋮
├── build // 此项目的构建目录,Gradle 在其中生成所有构建工件。
├── gradle // 	包含Gradle Wrapper的 JAR 文件和配置
│   └── wrapper 
├── gradle.properties  // 	项目特定的Gradle 配置属性
├── gradlew  // 	使用Gradle Wrapper执行构建的脚本
├── gradlew.bat // 	使用Gradle Wrapper执行构建的脚本
├── settings.gradle or settings.gradle.kts  // 	定义子项目列表的项目设置文件
├── subproject-one  // 通常一个项目被组织成一个或多个子项目
|   └── build.gradle or build.gradle.kts  // 每个子项目都有自己的 Gradle 构建脚本
├── subproject-two 
|   └── build.gradle or build.gradle.kts 
└── ⋮

从 4.10 版本开始,Gradle 会自动清理项目特定的缓存目录。构建项目后,会定期(最多每 24 小时)检查特定版本的缓存目录.gradle/<gradle-version>/是否仍在使用中。如果 7 天未使用它们,它们将被删除。

build.gradle

build.gradle是项目的构建配置文件,和pom.xml类似,可以管理依赖、配置、插件等。

默认最基础的结构如下:

// 插件 
plugins {
    id 'java'
    id 'war'
}
// 机构
group 'com.ali'
// 版本
version '1.0-SNAPSHOT'
// JDK 编译版本
sourceCompatibility = 1.8
// 仓库地址
repositories {
	// Maven中央仓库,http://repo1.maven.org/maven2/
	// jCenter:是由JFrog公司提供的Bintray中的Java仓库
    mavenCentral()
}
// 第三方依赖包
dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.11'
    testCompile group: 'junit', name: 'junit', version: '4.12'
    implementation 'com.alibaba:fastjson:2.0.6'
}

settings.gradle

settings.gradle 无论有多少个子模块,该文件只会有一个,且一定在根项目中,它的主要作用是配置项目或者依赖之间的关系。

默认只有一个根目录文件的名称:

rootProject.name = 'a-gradle'

gradlew.bat

Windows 环境下当前工程gradle环境命令执行脚本,比如gradlew.bat -v查看当前工程下的gradle版本,明明我们之前安装的版本为7.4,这里为啥又是5.2.1呢?(后面分析)
在这里插入图片描述

gradlew

Linux 环境下当前工程gradle环境命令执行脚本。

gradle.wrapper

wrapper是创建项目时自动下载的一个文件夹,该目录下有2个文件:gradle-wrapper.jargradle-wrapper.properties

├── gradle 
│   └── wrapper
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties

查看gradle-wrapper.properties

// 系统用户目录
distributionBase=GRADLE_USER_HOME
// 下载位置
distributionPath=wrapper/dists
// 下载的gradle的地址,使用的版本
distributionUrl=https\://services.gradle.org/distributions/gradle-5.2.1-bin.zip
// 安装基础目录
zipStoreBase=GRADLE_USER_HOME
// 安装子目录
zipStorePath=wrapper/dists

在C 盘用户目录,可以看到当前工程帮我们下载的Gradle。
在这里插入图片描述
由此可见wrapper目录的主要作用是配置并下载当前工程的Gradle环境,但是奇怪的是之前我们不是已经安装了Gradle了吗?为啥还要下载?

这是因为gradle发版本比较快,而且大多数不向下兼容,如果有一个项目使用的Gradle版本为5.0,你本地环境是7.0,那么很可能就无法使用7.0 版本的Gradle来编译打包,为了解决这种问题,Gradle就想出包装的做法,每个工程都会有自己单独的Gradle包装构建环境。。。这也是比较麻烦的一点。。。。

Wrapper 工作流程如下所示:

  1. 自动下载该工程声明的Gradle 版本
  2. 存储到用户目录下
  3. 构建项目时,使用当前的Gradle 环境
    在这里插入图片描述

.gradle

.gradle是Gradle 生成的项目特定缓存目录,每个版本创建一个缓存目录(例如,支持增量构建)。
在这里插入图片描述

build

build目录用于存放编译、打包的文件。

Gradle 工具栏

在IDEA 最右侧,和Maven 一样,也有一个工具栏按钮,打开之后可以看到该工程的依赖和任务。

在这里插入图片描述
Source Sets包含了maintest 两个目录,分别显示当前程序主目录和测试目录包含的所有依赖包。
在这里插入图片描述
Tasks下包含多个任务,它是Gradle中最小的执行单元,和Maven 中的目标一样,也可以直接理解为一个功能,如下图所示中,
可以看到已经分好类的众多任务:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

墨 禹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值