网站首页 > 技术文章 正文
2. Gradle
Gradle是一个开源通用的项目构建管理系统,它的主要功能是依赖包管理和构建任务的执行。它基于Groovy语言的DSL(Domain Specific Language领域特定语言)而不是XML,使用上更灵活;构建速度更快,在大部分场景下有Maven两倍速度,某些情况下甚至有100倍速度;它是建立在Maven、ANT的优点之上,是Android开发的默认编译工具,也是Spring Boot支持的主要编译工具。鉴于以上,我们这本书将以Gradle作为我们的构建工具。
2.1 安装
开发者主要的工作电脑操作系统一般为Windows和MacOS,我们分别使用Windows下的Chocolatey,以及MacOS下的Homebrew这样的软件包管理工具来安装Gradle,这些软件包管理工具还可以用来安装其它的软件。
Windows
- “以管理员身份运行”打开“命令提示符“(cmd);
- 确认Java安装:java -version
- 安装Windows下的软件包管理工具Chocolatey,安装地址:https://chocolatey.org/install。,安装命令:?@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin",安装完成后重新打开cmd;
- 安装Gradle,安装命令:choco install gradle,安装完成后重新打开cmd;
- 确认安装:gradle -v
macOS
- 确认Java安装:java -version;
- 安装MacOS下的软件包管理工具Homebrew,地址:https://brew.sh/。安装命令:/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
- 安装Gradle,安装命令:brew install gradle
- 确认安装:gradle -v
更多安装方式请参考:https://gradle.org/install/。
2.2 任务
像Maven的pom.xml一样,Gradle有一个构建文件build.gradle,这个文件主要由任务(task)、插件(plugin)和依赖(dependecy)组成。我们建立一个目录gradle-project,并新建一个文件build.gradle,并写入下面的内容:
task hello {
doLast {
println 'Hello World!'
}
}
task hello2 {
doLast {
println 'Hello Gradle!'
}
}
当前构建文件定义了一个两个task,名称分别为hello和hello2,内容分别是打印“Hello World!”和“Hello Gradle!”。
- 项目task列表:gradle tasks -all
- 执行hello task:gradle hello、gradle hello2
2.3 插件
插件就是一系列的task组成,我们进行java开发测需要java插件,java插件包含了:assemble 、build 、buildDependents 、buildNeeded 、classes 、clean 、jar、testClasses这些任务。使用java插件可以用下面方式在build.gradle中定义:
apply plugin: 'java'
或
plugins {
id 'java'
}
我们新建目录gradle-java,目录下的build.gradle内容为apply plugin: java,且在“gradle-java/src/main/java/top/wisely”目录下新建一个普通的“Hello.java”类:
package top.wisely;
public class Hello {
public static void main(String[] args) {
System.out.println("Hello World!!");
}
}
- 查看当前task列表:gradle tasks,这时多了很多task
- 执行编译task:gradle build,gradle-java下多了一个build目录,将我们的“Hello.java”编译成了“Hello.class”并为我们构建了一个“gradle-java.jar”
2.4 依赖
Gradle最重要的功能便是第三方包的依赖管理。
定义下载库
首先,在build.gradle里声明依赖包从何处下载,如:
repositories {
mavenCentral()
}
- 添加Maven中中心库作为依赖查找库,地址为https://repo.maven.apache.org/maven2/
- 也可以以url形式进行添加,如:
repositories {
mavenCentral()
maven { url 'https://repo.spring.io/snapshot' }
maven { url 'https://repo.spring.io/milestone' }
}
添加依赖
定义依赖,如添加spring-web依赖:
implementation group: 'org.springframework', name: 'spring-web', version: '5.1.5.RELEASE'
或简写成:
implementation 'org.springframework:spring-web:5.1.5.RELEASE'
依赖的定义分成三个部分:
- group:组织域名
- name:组织域名内唯一名称
- version:版本号
依赖类型
- implementation:编译时依赖。如:implementation 'org.springframework:spring-web:5.1.5.RELEASE';
- compileOnly:只在编译时依赖,而不在运行时依赖。org.projectlombok:lombok:1.18.6;
- runtimeOnly:只在运行时依赖,而不在编译时依赖。org.postgresql:postgresql:42.2.5;
- testImplementation:用来编译测试时依赖。junit:junit:4.12。
版本号说明
以Spring为例:5.1.5.RELEASE:
- 第一个数字5称为主要版本Major,版本更新后API不兼容;
- 其二个数字1称为次要版本Minor,版本更新后API兼容;
- 第三个数字5称为补丁版本Patch,版本更新后API兼容的bug修复。
后缀英文:
- BUILD-SNAPSHOT:快照版本,处于密集开发阶段的一次版本发布,不建议使用;
- Milestone:里程碑版本,完成了一组重要功能特性,可以尝试新特性。如:M1、M2、M3;
- Release Candidate:候选发布版本,属于beta版本,意味着功能已完备,经过几轮bug修复后即将发布为正式版本,可以全面学习和测试。如RC1、RC2、RC3;
- RELEASE:正式发布版。
完成gradle-java
- 像第三方依赖一样,我们自己的应用也需要定义自己的group和version,name默认为为应用名称:
group = 'top.wisely'
version = '0.0.1-SNAPSHOT'
- 完整的build.gradle如下:
apply plugin: 'java'
group = 'top.wisely'
version = '0.0.1-SNAPSHOT'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework:spring-web:5.1.5.RELEASE'
}
- 显示依赖:gradle dependencies
如何查找依赖
可访问https://mvnrepository.com/,检索所需要的第三方依赖。
2.5 Wrapper
Wrapper是包含了指定Gradle版本的脚本,可以在使用的时候下载。这样开发的时候就无需下载安装配置Gradle可直接使用。
Spring Boot也使用的是Gradle Wrapper,这样我们可以使用与Spring Boot最匹配的Gradle版本,且无需专门安装配置Gradle。
Spring Boot的应用下有gradlew和gradlew.bat文件;其中gradlew是macOS或Linux系统使用,gradlew.bat为Windows系统使用。
猜你喜欢
- 2024-12-16 程序员须知——电脑C盘空间不足,哪些配置文件必须清理
- 2024-12-16 安卓开发环境搭建 安卓开发环境搭建eclipse
- 2024-12-16 已满的C盘如何清理无用的文件 c盘满了如何删
- 2024-12-16 多人合作使用git,推送代码、和并分支
- 2024-12-16 OpenFaaS实战之七:java11模板解析
- 2024-12-16 Android项目迁移到AndroidX 从android转移资料
- 2024-12-16 全自动化的 Android 编译管线 android编译器app
- 2024-12-16 Could not install Gradle distribution from Reason
- 2024-12-16 Android Studio下载Gradle超时解决方案
- 2024-12-16 项目自动化构建开源工具Gradle 开源项目github
- 02-21走进git时代, 你该怎么玩?_gits
- 02-21GitHub是什么?它可不仅仅是云中的Git版本控制器
- 02-21Git常用操作总结_git基本用法
- 02-21为什么互联网巨头使用Git而放弃SVN?(含核心命令与原理)
- 02-21Git 高级用法,喜欢就拿去用_git基本用法
- 02-21Git常用命令和Git团队使用规范指南
- 02-21总结几个常用的Git命令的使用方法
- 02-21Git工作原理和常用指令_git原理详解
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)