Gradle-01:0基础入门

简介: 未来构建工具的王者,Gradle基础入门

gradle

## 前提

Gradle 语法都是 Groovy ,详情见 [[Groovy入门]]

1. JDK、Maven、Nexus版本要求

本工程运行环境对应的版本 JDK版本在 1.8Maven版本 3.6Nexus 3.34+ 三者的安装不在本工程内容中,自行百度脑补。

当前 Gradle 需要 8 到 16 之间的 Java 版本。尚不支持 Java 17 及更高版本,下图为 Gradle 兼容性表格。

Java version 对应 Gradle 版本
8 2
9 4.3
10 4.7
11 5
12 5.4
13 6
14 6.3
15 6.7
16 7

2. Gradle环境配置(Windows)

官网

  • Windows下配置 Gradle环境配置,需要先从 官网 下载最新的官方发行版
  • 将下载的压缩文件解压到一个路径下,例如:D:\ProgramFiles\Gradle\gradle-7.2
  • 配置环境变量 GRADLE_HOME ,值为 D:\ProgramFiles\Gradle\gradle-7.2
  • GRADLE_HOME 添加到 path
  • 再添加环境变量 GRADLE_USER_HOME ,这个是用户空间,指向磁盘中一个文件夹即可,例如:E:\Repertory\RepositoryGradle\.gradle 这个很重要
  • GRADLE_USER_HOME 目录下我们新建两个文件,gradle.propertiesinit.gradle

Gradle 附带自己的 Groovy 库,因此不需要安装 Groovy,同时 Gradle 会忽略任何现有的 Groovy 安装。

2.1. gradle.properties

Gradle 配置项,可以控制用于执行构建的 Java 进程,如果在多个位置配置了一个选项,则以在这些位置中的任何一个中找到的第一个配置项为准:

  • 命令行,使用 -P / --project-prop 环境选项设置
  • GRADLE_USER_HOME 目录中的 gradle.properties
  • 项目根目录下的 gradle.properties
  • Gradle 安装目录中的 gradle.properties

Gradle 配置项主要有以下属性可用于配置

org.gradle.caching=(true,false)

当设置为 true 时,Gradle 将在可能的情况下重用任何先前构建的任务输出,从而使构建速度更快。了解有关使用构建缓存的更多信息。

org.gradle.caching.debug=(true,false)

设置为 true 时,每个任务的单个输入属性哈希值和构建缓存键都会记录在控制台上。了解有关任务输出缓存的更多信息

org.gradle.parallel=(true,false)

配置后,Gradle 将分叉到 org.gradle.workers.max JVM 以并行执行项目。要了解有关并行任务执行的更多信息,请参阅 Gradle 构建性能部分

org.gradle.daemon=(true,false)

当设置为 true 时,Gradle 守护程序用于运行构建。3.0开始默认开启。

当然 Gradle 配置项 还有其他属性可供选择,具体,比如日志、优先权、警告模式等。 此处给除一个常见的配置项,具体如下:


org.gradle.daemon=true

org.gradle.parallel=true

org.gradle.caching=true

2.2. init.gradle

Gradle 全局配置,主要定义定义仓库


allprojects{

 repositories {

 def ALIYUN_REPOSITORY_URL = 'http://maven.aliyun.com/nexus/content/groups/public'

 def ALIYUN_JCENTER_URL = 'http://maven.aliyun.com/nexus/content/repositories/jcenter'

 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

 }

 }

 }

 maven {

 allowInsecureProtocol = true

 url ALIYUN_REPOSITORY_URL

 url ALIYUN_JCENTER_URL

 }

 }

}

演示

3. IDEA工具集成

演示所使用的IDEA版本是 2021.1.2

20210907170523

3.1. IDEA配置Gradle

IDEA 集成 Gradle需要安装插件,否则无法使用,插件不论你在线安装还是离线安装都可以。

20210907165919

20210907174102

IDEA 中的 Gradle user home 后的选项内容将是配置的 GRADLE_USER_HOME 环境变量。 这个点非常会让人忽视的。

3.2. 创建和认识Java工程项目

New Project_1

New Project_2

  • Name:项目名称
  • Location:所在的路径
  • GroupId、ArtifactId、Version

这些都与Maven雷同。

New Project_3

运行 gradle build 的输出结果


17:21:31: Executing task 'build'...

  

> Task :compileJava NO-SOURCE

> Task :processResources NO-SOURCE

> Task :classes UP-TO-DATE

> Task :jar UP-TO-DATE

> Task :assemble UP-TO-DATE

> Task :compileTestJava NO-SOURCE

> Task :processTestResources NO-SOURCE

> Task :testClasses UP-TO-DATE

> Task :test NO-SOURCE

> Task :check UP-TO-DATE

> Task :build UP-TO-DATE

  

BUILD SUCCESSFUL in 131ms

1 actionable task: 1 up-to-date

17:21:31: Task execution finished 'build'.

基本常用任务

上图中罗列的基本任务,可以先认识下,下来重点描述下这两个文件 build.gradlesetting.gradle,这是我们Gradle工程开发最核心的两个文件。

  • build.gradle

这个文件非常重要, Gradle 的核心配置文件,相当于 Maven 中的 POM ,此后工程开发都围绕着这个文件来编写。


plugins { //插件

 id 'java'

}

  

group 'xyz.wongs.gradle'    // group 分组

version '1.0.0-SNAPSHOT'    // 版本

  

repositories {  // 仓库

 mavenCentral()

}

  

dependencies {  // 依赖

 testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'

 testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'

}

  

test {  // 测试

 useJUnitPlatform()

}
  • setting.gradle

这是针对模块的引入配置文件,可以在此管理每个模块激活状态,一般在添加新模块的过程中使用。


rootProject.name = 'demo'

4. Gradle Wrapper

Maven中,开发者和项目服务器都需要配置有相同的 Maven版本,才能保证应用正常编译执行,Gradle提供一个 Gradle Wrapper概念,可以项目中自带Gradle的处理环境,Gradle Wrapper简化 Gradle本身的安装、部署,避免 Gradle版本不通带来的各种问题。

在任意目录中 执行 gradle wrapper

20210908092359

切换版本

操作 描述
切换 6.8 版本 gradle wrapper --gradle-version 6.8
切换 6.5 版本 gradle wrapper --gradle-version 6.5

20210908093052

执行上述命令, gradle-wrapper.propertiesdistributionUrl 后的 URL 变为 https\://services.gradle.org/distributions/gradle-6.8-bin.zip ,版本切换成功。

20210908093313

5. 代码分析器

所有开发人员编写的代码,在程序上线之前都一定要进行性能的检测,而对于 Gradle 项目来讲,也需要清楚的知道,项目代码构建的情况,包括构建环境、依赖库以及程序性能上存在的问题,这样方便与人沟通。为了解决这样的构建问题,所以在 Gradle 中就提供了一个 Build Scan 代码扫描工具(这是一个在 4.3 版本才开始提供), 这个工具会自动的将本地构建的过程发送到指定服务器端,并且由服务器端上随机生成的可供访问的链接,通过链接进行注册,即可完成访问,这个分析器是 gradle wrapper 提供。


gradlew build --scan

20210908093948

输入邮箱,在邮箱中确认

首页

邮箱确认

报告内容

目录
相关文章
|
6月前
|
XML Java 测试技术
Gradle安装部署与基础入门详解
Gradle安装部署与基础入门详解
729 0
|
Java 测试技术 Spring
Gradle从0入门到实战系列【八】SpringBoot集成Junit单元测试
JUnit 是一个 Java 编程语言的单元测试框架。JUnit 在测试驱动的开发方面有很重要的发展,是起源于 JUnit 的一个统称为 xUnit 的单元测试框架之一。
1625 1
Gradle从0入门到实战系列【八】SpringBoot集成Junit单元测试
|
Java API Apache
Gradle从0入门到实战系列【一】Hello World Gradle
早期没有项目管理工具时,对于项目所依赖的第三方包采用的是:拷贝三方jar包到本地,然后加入到lib目录下,这样做劣势不言而喻,管理复杂容易冲突。 Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,也增加了基于Kotlin语言的kotlin-based DSL,抛弃了基于XML的各种繁琐配置。面向Java应用为主。
614 0
Gradle从0入门到实战系列【一】Hello World Gradle
|
6月前
|
XML 缓存 Java
Gradle 构建自动化工具入门
Gradle 构建自动化工具入门
|
XML Java Apache
Gradle极简入门
Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,而不是传统的XML。Gradle构建脚本是用Groovy编写的,也可以使用Kotlin编写,两者都是基于JVM的语言。
321 0
|
XML 存储 缓存
|
架构师 Java 测试技术
Gradle从0入门到实战系列【三】build.gradle之Project
在gradle中,每一个build.gradle文件对应一个Project实例,我们在build.gradle中编写的内容,就相当于Project实例的属性或方法, build.gradle和Maven中的pom.xml都是一个项目(project)的依赖配置文件,只有掌握了Project相关知识,才能编写出强大的build.gradle。
925 1
Gradle从0入门到实战系列【三】build.gradle之Project
|
弹性计算 Java jenkins
Gradle从0入门到实战系列【十】集成Dockerfile构建Docker镜像
在工作中,我们会将SpringBoot程序打包成Docker镜像,这就需要在Gradle中配置Dockerfile构建程序,并且能将打包后的镜像部署并启动为一个容器,Gradle的插件能够帮我们完成这件事
1205 0
Gradle从0入门到实战系列【十】集成Dockerfile构建Docker镜像
|
缓存 Java Linux
Gradle从0入门到实战系列【九】仓库与私服
Gradle沿用了Maven仓库,在使用仓库时能够很友好的基于Maven仓库提供功能,但Gradle所产生的构建并不会提供给Maven仓库,因为Gradle自己拷贝了一份Maven本地仓库缓存到了自己仓库目录下。
1213 0
Gradle从0入门到实战系列【九】仓库与私服