1. 什么是Gradle?

Gradle是一个开源的构建自动化工具,专注于灵活性和性能。 Gradle构建脚本使用Groovy或Kotlin DSL编写。 阅读Gradle功能,了解Gradle的功能。

  • 高度可定制 - Gradle以一种可以以最基本的方式定制和扩展的方式建模。
  • 快速 - Gradle通过重用先前执行的输出,仅处理已更改的输入以及并行执行任务来快速完成任务。
  • 功能强大 - Gradle是Android的官方构建工具,并支持许多流行的语言和技术。

2. Gradle 的下载和安装

我们可以安装Gradle 构建工具在Linux,MacOS ,windows 操作系统上,这个文档覆盖了使用包管理器像SDKMAN!,Homebrew,或者Scoop的安装方法。

使用Gradle Wrapper是升级Gradle的推荐方法

我们可以找到所有的发布版本在发布页面

1.1 Gradle 必要条件

Gradle 可以运行在大多数的操作系统中,但是需要JDK 或者JRE 8 以上版本

检查方法,打开操作系统命令行终端,输入命令

java -version

执行成功如下所示:

注意:

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

Gradle 会在path环境变量中招JDK 安装路径,我们可以设置JAVA_HOME 环境变量指向所需JDK的安装目录

1.2 Gradle 安装

1.2.1 包管理器安装

SDKMAN! 是一个在大多数基于Unix的系统上管理多个软件开发工具包的并行版本的工具。

sdk install gradle

Homebrew是“macOS缺失包管理器”

brew install gradle

Scoop是一款受Homebrew启动的Windows命令行安装程序。

scoop install gradle

Chocolatey是“Windows的包管理器”。

choco install gradle

MacPorts是一个用于管理macOS上的工具的系统:

 sudo port install gradle

1.2.2 手动安装

Download 下载最新的发布版本

当前最新版本是5.2.1 ,发布时间是2019年2月8日。发布的压缩包有两种。

The current Gradle release is version 5.2.1, released on 08 Feb 2019. The distribution zip file comes in two flavors:

1.3 配置环境变量

1.3.1 Linux or Mac OS

export PATH=$PATH:/opt/gradle/gradle-5.2./bin

1.3.2 Windows

新建环境变量

GRADLE_HOME

C:\Users\xingyun\apps\gradle\gradle-5.2.-all\gradle-5.2.

追加到Path环境变量

%GRADLE_HOME%\bin\

1.4 验证安装

输入以下命令验证安装

gradle -v

验证成功输出如下所示:


1.5 创建新的Gradle构建

1.5.1 初始化一个项目

1. 打开命令行,在根目录下输入以下命令创建一个叫做 basic-demo 文件夹

mkdir basic-demo

2. 执行成功会显示如下:

3.进入创建的文件夹输入以下命令

cd basic-demo

4.执行成功如下所示:

5.输入gradle初始化命令

gradle init

6. 执行成功如下所示:

7.输入数字2后按下回车键

8.显示如下所示

9.这里选择脚本语言,我们选择groovy,因此输入1后按下回车键

10.执行成功后如下所示:

11.这里需要设置项目名称,我们保持默认即可,直接回车或者输入一个项目名称

12.我们可以看到已经生成成功了

13. 查看当前文件夹列表,输入命令

ls

14. 执行成功返回结果如下:

目录结构如下:

├── build.gradle
├── gradle
│   └── wrapper
│   ├── gradle-wrapper.jar
│   └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle
  • build.gradle 用于配置当前项目的Gradle构建脚本
  • gradle-wrapper.jar Gradle Wrapper可执行JAR
  • gradle-wrapper.properties Gradle Wrapper配置属性
  • gradlew 基于Unix的系统的Gradle Wrapper脚本
  • gradlew.bat 适用于Windows的Gradle Wrapper脚本
  • settings.gradle 用于配置Gradle构建的Gradle设置脚本

1.5.2 创建一个task (任务)

Gradle提供API,用于通过基于Groovy或Kotlin的DSL创建和配置任务。 项目包括一组任务,每个任务执行一些基本操作。

Gradle附带了一个可以在您自己的项目中配置的任务库。 例如,有一种名为Copy的核心类型,它将文件从一个位置复制到另一个位置。 复制任务非常有用(有关详细信息,请参阅文档),但在此,再一次,让我们保持简单。 执行以下步骤:

1. 创建一个src 文件夹

 2.在src目录中添加名为myfile.txt的文件。 内容是任意的(甚至可以是空的),但为方便起见,添加单行Hello,World! 它。

3. 在构建文件中定义一个名为Copy的类型的副本(注意大写字母),该任务将src目录复制到名为dest的新目录。 (您不必创建dest目录 - 任务将为您完成。)

build.gradle

task copy(type: Copy, group: "Custom", description: "Copies sources to the dest directory") {
from "src"
into "dest"
}

build.gradle.kts

tasks.create<Copy>("copy") {
description = "Copies sources to the dest directory"
group = "Custom" from("src")
into("dest")
}

在这里,group和description可以是您想要的任何内容。 您甚至可以省略它们,但这样做也会在以后使用的任务报告中省略它们。

这段脚本的功能是将src 文件夹下的所有内容都复制到dest 文件夹下,如果dest 文件夹不存在,则创建它。

4.执行新的copy任务

.\gradlew copy

打开dest 文件夹我们可以看到,src 文件夹下刚才创建的myfile.txt 已经复制进来了。

 

1.5.3 使用插件

Gradle包含一系列插件,Gradle插件门户网站上提供了许多插件。 该发行版附带的插件之一是base 插件。 结合名为Zip的核心类型,您可以使用配置的名称和位置创建项目的zip存档。

使用插件语法将基本插件添加到构建脚本文件中。 请务必在文件顶部添加插件{}块。

 
Groovy build.gradle
plugins {
id "base"
}

Kotlin build.gradle.kts

plugins {
id("base")
}

现在添加一个从src目录创建zip存档的任务。

Groovy build.gradle

task zip(type: Zip, group: "Archive", description: "Archives sources in a zip file") {
from "src"
setArchiveName "basic-demo-1.0.zip"
}

Kotlin build.gradle.kts

tasks.create<Zip>("zip") {
description = "Archives sources in a zip file"
group = "Archive" from("src")
setArchiveName("basic-demo-1.0.zip")
}

基本插件使用设置在 build/distributions 文件夹中创建一个名为basic-demo-1.0.zip的存档文件。

在这种情况下,只需运行新的zip任务,

.\gradlew zip

执行成功如下会显示

并查看生成的zip文件是否在您期望的位置

1.5.3 探索并调试您的构建

让我们看看在我们的新项目中如何处理Gradle。对命令行接口的完整引用也可用。

1.5.3.1 发现可用任务

tasks命令列出了可以调用的渐变任务,包括由基本插件添加的任务,以及刚刚添加的自定义任务。

 .\gradlew tasks

执行成功会显示:

1.5.4 分析和调试生成

Gradle还提供了一个丰富的基于Web的构建视图,称为buildscan

通过使用--scan选项或将构建扫描插件显式应用到项目中,您可以在link:scans.gradle.com免费创建一个构建扫描。将生成扫描发布到scans.gradle.com将此数据传输到gradle的服务器。要将数据保存在自己的服务器上,请查看Gradle Enterprise。

尝试通过在执行任务时添加--scan来创建生成扫描。

 .\gradlew zip --scan

执行成功后如下所示:

打开网址:https://gradle.com/s/niiuxn3t6mogs

首次打开会有一个页面提示输入邮箱,输入后

邮箱可以看到如下所示:

点击Discover your build 后可以看到这样的管理界面

如果你浏览一下你的构建扫描,你应该能够很容易地发现在哪里执行了什么任务,花了多长时间,应用了哪些插件,等等。考虑下一次在StackOverflow上调试某些内容时共享生成扫描。

1.5.5 发现可用属性

“属性”命令告诉您有关项目属性的信息。

 .\gradlew properties

输出结果如下

详细内容可看:

> Task :properties

------------------------------------------------------------
Root project
------------------------------------------------------------ allprojects: [root project 'basic-demo']
ant: org.gradle.api.internal.project.DefaultAntBuilder@28d77beb
antBuilderFactory: org.gradle.api.internal.project.DefaultAntBuilderFactory@7e7a6637
application: C++ application 'main'
archivesBaseName: basic-demo
artifacts: org.gradle.api.internal.artifacts.dsl.DefaultArtifactHandler_Decorated@6ac031ac
asDynamicObject: DynamicObject for root project 'basic-demo'
baseClassLoaderScope: org.gradle.api.internal.initialization.DefaultClassLoaderScope@417a100d
buildDir: C:\Users\xingyun\Downloads\basic-demo\build
buildFile: C:\Users\xingyun\Downloads\basic-demo\build.gradle
buildPath: :
buildScriptSource: org.gradle.groovy.scripts.TextResourceScriptSource@526133ea
buildTypes: BuildType container
buildscript: org.gradle.api.internal.initialization.DefaultScriptHandler@7f87ac4f
childProjects: {}
class: class org.gradle.api.internal.project.DefaultProject_Decorated
classLoaderScope: org.gradle.api.internal.initialization.DefaultClassLoaderScope@1421af42
components: SoftwareComponentInternal set
configurationActions: org.gradle.configuration.project.DefaultProjectConfigurationActionContainer@54a2fb3
configurationTargetIdentifier: org.gradle.configuration.ConfigurationTargetIdentifier$@5eefa293
configurations: configuration container
convention: org.gradle.api.internal.plugins.DefaultConvention@1cc888d5
copy: task ':copy'
defaultArtifacts: org.gradle.api.internal.plugins.DefaultArtifactPublicationSet_Decorated@58a6fb1
defaultTasks: []
deferredProjectConfiguration: org.gradle.api.internal.project.DeferredProjectConfiguration@5169ef04
dependencies: org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler_Decorated@
dependencyLocking: org.gradle.internal.locking.DefaultDependencyLockingHandler_Decorated@2ae79433
depth:
description: null
displayName: root project 'basic-demo'
distsDir: C:\Users\xingyun\Downloads\basic-demo\build\distributions
distsDirName: distributions
ext: org.gradle.internal.extensibility.DefaultExtraPropertiesExtension@7c468139
extensions: org.gradle.api.internal.plugins.DefaultConvention@1cc888d5
fileOperations: org.gradle.api.internal.file.DefaultFileOperations@62c9507a
fileResolver: org.gradle.api.internal.file.BaseDirFileResolver@19a7ed97
flavors: Flavor container
gradle: build 'basic-demo'
group:
identityPath: :
inheritedScope: org.gradle.internal.extensibility.ExtensibleDynamicObject$InheritedDynamicObject@ff7a49c
layout: org.gradle.api.internal.file.DefaultProjectLayout@47f0a312
libsDir: C:\Users\xingyun\Downloads\basic-demo\build\libs
libsDirName: libs
listenerBuildOperationDecorator: org.gradle.configuration.internal.DefaultListenerBuildOperationDecorator@6f126116
logger: org.gradle.internal.logging.slf4j.OutputEventListenerBackedLogger@49ffe236
logging: org.gradle.internal.logging.services.DefaultLoggingManager@7b9e6cd1
machines: org.gradle.nativeplatform.internal.DefaultTargetMachineFactory@39b4b883
modelRegistry: org.gradle.model.internal.registry.DefaultModelRegistry@45d26472
modelSchemaStore: org.gradle.model.internal.manage.schema.extract.DefaultModelSchemaStore@730ac0ac
module: org.gradle.api.internal.artifacts.ProjectBackedModule@5d3640ea
mutationState: project :
name: basic-demo
normalization: org.gradle.normalization.internal.DefaultInputNormalizationHandler_Decorated@7b7ac2f8
objects: org.gradle.api.internal.model.DefaultObjectFactory@67161db4
parent: null
parentIdentifier: null
path: :
platforms: Platform container
pluginManager: org.gradle.api.internal.plugins.DefaultPluginManager_Decorated@31b114d0
plugins: [org.gradle.buildinit.plugins.BuildInitPlugin@141bbdea, org.gradle.buildinit.plugins.WrapperPlugin@39dbc093, org.gradle.api.plugins.HelpTasksPlugin@6ef781a1, org.gradle.language.base.plugins.LifecycleBasePlugin@57591f3b, org.gradle.language.plugins.NativeBasePlugin@1ee40cd7, org.gradle.platform.base.plugins.ComponentBasePlugin@79dc88c0, org.gradle.language.base.plugins.LanguageBasePlugin@2b74e4d3, org.gradle.platform.base.plugins.BinaryBasePlugin@344b9641, org.gradle.language.base.plugins.ComponentModelBasePlugin@af7a6ab, org.gradle.nativeplatform.plugins.NativeComponentModelPlugin@1770b5bd, org.gradle.nativeplatform.plugins.NativeComponentPlugin@1b2e99fc, org.gradle.nativeplatform.toolchain.plugins.MicrosoftVisualCppCompilerPlugin@73bffd46, org.gradle.nativeplatform.toolchain.plugins.GccCompilerPlugin@44cacf64, org.gradle.nativeplatform.toolchain.plugins.ClangCompilerPlugin@5685571d, org.gradle.nativeplatform.toolchain.internal.plugins.StandardToolChainsPlugin@390bc548, org.gradle.language.cpp.plugins.CppBasePlugin@35d25ae2, org.gradle.language.cpp.plugins.CppApplicationPlugin@27f112d3, org.gradle.api.plugins.ReportingBasePlugin@5bb0948f, org.gradle.testing.base.plugins.TestingBasePlugin@3cf63b34, org.gradle.nativeplatform.test.plugins.NativeTestingBasePlugin@1bd47302, org.gradle.nativeplatform.test.cpp.plugins.CppUnitTestPlugin@341c9d21, org.gradle.api.plugins.BasePlugin@6bd773c1]
processOperations: org.gradle.api.internal.file.DefaultFileOperations@62c9507a
project: root project 'basic-demo'
projectConfigurator: org.gradle.api.internal.project.BuildOperationCrossProjectConfigurator@6675ca14
projectDir: C:\Users\xingyun\Downloads\basic-demo
projectEvaluationBroadcaster: ProjectEvaluationListener broadcast
projectEvaluator: org.gradle.configuration.project.LifecycleProjectEvaluator@5e81f9bb
projectPath: :
projectRegistry: org.gradle.api.internal.project.DefaultProjectRegistry@e2492df
properties: {...}
providers: org.gradle.api.internal.provider.DefaultProviderFactory@5ebda1a1
publicType: org.gradle.api.plugins.BasePluginConvention
reporting: org.gradle.api.reporting.ReportingExtension_Decorated@16d0f508
repositories: repository container
resourceLoader: org.gradle.internal.resource.transfer.DefaultUriTextResourceLoader@47cd8a48
resources: org.gradle.api.internal.resources.DefaultResourceHandler@6d554a04
rootDir: C:\Users\xingyun\Downloads\basic-demo
rootProject: root project 'basic-demo'
script: false
scriptHandlerFactory: org.gradle.api.internal.initialization.DefaultScriptHandlerFactory@5ed64ea6
scriptPluginFactory: org.gradle.configuration.ScriptPluginFactorySelector@4fbf98c1
serviceRegistryFactory: org.gradle.internal.service.scopes.ProjectScopeServices$@648bd4b4
services: ProjectScopeServices
standardOutputCapture: org.gradle.internal.logging.services.DefaultLoggingManager@7b9e6cd1
state: project state 'EXECUTED'
status: integration
subprojects: []
tasks: task set
toolChains: NativeToolChain container
unitTest: C++ test suite 'test'
version: unspecified
zip: task ':zip' BUILD SUCCESSFUL in 1s
actionable task: executed
PS C:\Users\xingyun\downloads\basic-demo>

默认情况下,项目名称与文件夹名称匹配。您还可以指定group和version属性,但目前它们采用的是默认值,如描述所示。

buildFile 属性是生成脚本的完全限定路径名,默认情况下,它位于projectdir-中。

您可以更改许多属性。例如,您可以尝试将以下行添加到构建脚本文件中,然后重新执行 .\gradlew properties

description = "A trivial Gradle build"
version = "1.0"

Gradle 的下载安装配置以及创建第一个Gradle 项目的更多相关文章

  1. win10 DVWA下载安装配置(新手学渗透)

    电脑重装系统了,需要重新装一下渗透测试的学习环境DVWA,借此机会就跟大家讲一下DVWA的安装过程,因为不同的电脑配置.环境不同,在我的电脑上按照我这个安装教程是一次性就安装好了的.如果安装的时候遇到 ...

  2. Jmeter下载安装配置及使用(windows)

    1 前言 仅作为记录使用. 2 步骤 2.1 下载地址:http://jmeter.apache.org/download_jmeter.cgi 2.2 选择binary版本即可:apache-jme ...

  3. JDK下载安装配置教程(详细)

    JDK下载安装配置教程(详细) 版权声明:本文为原创文章,转载请附上原文出处链接和本声明.https://www.cnblogs.com/mxxbc/p/11844885.html 因为最近需要在Wi ...

  4. win10操作系统下oracle11g客户端/服务端的下载安装配置卸载总结

    win10操作系统下oracle11g客户端/服务端的下载安装配置卸载总结 一:前提 注意:现在有两种安装的方式 1. oracle11g服务端(64位)+oracle客户端(32位)+plsql(3 ...

  5. Node.js npm基础安装配置&创建第一个VUE项目

    使用之前,我们先来明白这几个东西是用来干什么的. node.js: 一种javascript的运行环境,能够使得javascript脱离浏览器运行.Node.js的出现,使得前后端使用同一种语言,统一 ...

  6. 01_2Java开发环境的下载 安装 配置

    01_2Java开发环境的下载 安装 配置 l 配置Java开发环境步骤(WindowsXP) l 下载并按照最新版本的J2SDK l 设置Windows环境变量 l 选择合适的文本编辑器或使用集成开 ...

  7. 2019-03-18 OpenCV Tesseract-OCR 下载 安装 配置(cv2 报错)

    OpenCV 下载 安装 配置 1.下载和Python版本对应的版本,此为下载地址 2.安装(在powershell管理员模式下安装) pip3 install .\opencv_python-3.4 ...

  8. 从零开始使用git第一篇:下载安装配置

    从零开始使用git 第一篇:下载安装配置 第一篇:从零开始使用git第一篇:下载安装配置 第二篇:从零开始使用git第二篇:git实践操作 第三篇:从零开始使用git第三篇:git撤销操作.分支操作和 ...

  9. Windows32位或64位下载安装配置Scala

    [学习笔记] Windows 32位或64位下载安装配置Scala: 1)下载地址:http://www.scala-lang.org/download/,看我的spark那节,要求scala是2.1 ...

随机推荐

  1. [OpenCV-Python] OpenCV 中视频分析 部分 VI

    部分 VI视频分析 OpenCV-Python 中文教程(搬运)目录 39 Meanshift 和 和 Camshift 目标 • 本节我们要学习使用 Meanshift 和 Camshift 算法在 ...

  2. 笔记:FastAdmin 上传设置

    笔记:FastAdmin 上传设置 FastAdmin 的上传设置为统一配置,在 application/extra/upload.php 中文件中. <?php //上传配置 return [ ...

  3. Burp Suite之Intruder模块(四)

    Burp Suite之Intruder模块(三) Intruder介绍: Burp intruder是一个强大的工具,用于自动对Web应用程序自定义的攻击.它可以用来自动执行所有类型的任务您的测试过程 ...

  4. C++雾中风景番外篇2:Gtest 与 Gmock,聊聊C++的单元测试

    正式工作之后,公司对于单元测试要求比较严格.(笔者之前比较懒,一般很少写完整的单测~~).作为一个合格的开发工程师,需要为所编写代码编写适量的单元测试是十分必要的,在实际进行的开发工作之中,TDD(T ...

  5. Java内存管理-JVM内存模型以及JDK7和JDK8内存模型对比总结(三)

    勿在流沙住高台,出来混迟早要还的. 做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! 上一篇分享了JVM及其启动流程,今天介绍一下JVM内部的一些区域,以及具体的区域在运行 ...

  6. Linux成长之路

    Linux命令格式: 命令   选项 参数command [-options] [parameter1] ···· 常用命令: tree 以目录树的方式显示: tree / 以目录树方式显示根目录结构 ...

  7. 4815: [Cqoi2017]小Q的表格 莫比乌斯反演 分块

    (Updated 2018.04.28 : 发现公式效果不好,重新处理图片)国际惯例的题面:看到这两个公式,很多人都会想到与gcd有关.没错,最终的结论就是f(a,b)=f(gcd(a,b))*(a/ ...

  8. BZOJ.3757.苹果树(树上莫队)

    题面链接 /* 代码正确性不保证..(不过交了SPOJ没WA T了最后一个点) 在DFS序做莫队 当一个点不是另一个点的LCA时,需要加上它们LCA的贡献 */ #include <cmath& ...

  9. 20172302 《Java软件结构与数据结构》第三周学习总结

    2018年学习总结博客总目录:第一周 第二周 第三周 教材学习内容总结 第五章 队列 1.队列是一种线性集合,其元素从一端加入,从另一端删除:队列元素是按先进先出(FIFO(First in Firs ...

  10. spring源码分析系列 (2) spring拓展接口BeanPostProcessor

    Spring更多分析--spring源码分析系列 主要分析内容: 一.BeanPostProcessor简述与demo示例 二.BeanPostProcessor源码分析:注册时机和触发点 (源码基于 ...