欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【工欲善其事必先利其器·构建工具】Gradle使用教程·创建新的构建

程序员文章站 2022-04-23 22:37:19
...

跟随这个指导,您将创建一个简单的Gradle项目,调用一些基本的Gradle命令,并且感受一下如何使用Gradle来管理项目。

您需要:

1. 花费大概11分钟;

2. 一个终端应用;

3. 安装好JRE或Java JDK(1.8以上版本);

4. 安装好Gradle(4.10.3以上版本);

初始化项目

首先,让我们来创建一个新的目录用来运行项目

❯ mkdir basic-demo

❯ cd basic-demo

然后我们使用Gradle的init 命令来生成一个简单的项目,我们将探索生成的所有东西,以便您确切地知道发生了什么。

❯ gradle init

Starting a Gradle Daemon (subsequent builds will be faster)



BUILD SUCCESSFUL in 3s

2 actionable tasks: 2 executed

如果您想使用Kotlin DSL来初始化,也可以使用gradle init --dsl kotlin命令。

输出“BUILD SUCCESSFUL”表明已成功生成一个“空”项目,如果没有输出请检查Gradle的安装以及JAVA_HOME环境变量的配置。

生成的项目结构如下:

Groovy

    ├── build.gradle  ①

    ├── gradle

    │   └── wrapper

    │       ├── gradle-wrapper.jar  ②

    │       └── gradle-wrapper.properties  ③

    ├── gradlew  ④

    ├── gradlew.bat  ⑤

    └── settings.gradle  ⑥

Kotlin

    ├── build.gradle.kts  ①

    ├── gradle

    │   └── wrapper

    │       ├── gradle-wrapper.jar  ②

    │       └── gradle-wrapper.properties  ③

    ├── gradlew  ④

    ├── gradlew.bat  ⑤

    └── settings.gradle.kts  ⑥

①    当前项目的Gradle构建配置脚本文件;

②    Gradle Wrapper 可执行JAR文件;

③    Gradle Wrapper 配置属性文件;

④    Gradle Wrapper 基于Unix系统的脚本文件;

⑤    Gradle Wrapper Windows系统脚本文件;

⑥    Gradle 设置脚本文件用来配置Gradle的构建;

注解:init可以生成各种不同类型的项目(后续文档再介绍),甚至知道如何将简单的pom.xml文件转换成gradle。

惊讶吧!我们可以在此结束指导文档了,但是我们也提供给您机会去了解更多如何在项目中使用Gradle,请继续往下吧!

 

创建一个任务

Gradle提供了很多API接口给通过Groovy或Kotlin DSL来创建或配置任务。通常,一个项目会包含一个任务集,每一个任务都会执行一些基础操作。

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

1.      在basic-demo根目录下创建一个src文件夹;

2.      在src文件夹中创建一个 myfile.txt的文件,文件内容是任意的(甚至可以是空的),但是为了方便我们仅仅添加一行“Hello,World!”。

3.      在您的build.gradle文件中定义一个名叫“copy”的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您可以自己定义为任意内容,您甚至可以省略他们,但是这样做也会在稍后使用的任务报告中省略它们。

现在,您可以执行这个新的copy的任务了:

> ./gradlew copy 
> Task :copy
  
BUILD SUCCESSFUL in 0s 1 actionable task: 1 executed

执行完后请检查src目录下的myfile.txt文件是否被拷贝到了dest目录下,并且其内容也同时被拷贝了。

 

应用一个插件

Gradle包括一系列的插件,在Gradle插件门户网站中还有更多的插件。发行版中包含的插件之一是基本插件。与称为Zip的核心类型相结合,您可以使用配置的名称和位置创建项目的Zip归档。

使用plugins语法将基本插件添加到构建脚本文件中。确保在文件的顶部添加plugins{}块。

build.gradle

plugins {

    id "base"

}

build.gradle.kts

plugins {

    id("base")

}

现在可以添加一个任务去创建一个源自 src文件夹的压缩文件了:

build.gradle

task zip(type: Zip, group: "Archive", description: "Archives sources in a zip file") {

    from "src"

    setArchiveName "basic-demo-1.0.zip"

}

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/distribution文件夹中创建一个名为 basic-demo-1.0.zip的归档文件。在这种情况下,只需运行新的 zip任务并查看生成的 zip文件是否在您期望的位置:

> ./gradlew zip 
> Task :zip  
BUILD SUCCESSFUL in 0s 1 actionable task: 1 executed

探索并调试您的构建

让我们看看在我们的新项目中,我们还可以用Gradle做些什么。对命令行接口的完整引用也是非常好的。

查看可用的任务

tasks命令列出了可以调用的 Gradle任务,包括基本插件添加的任务,以及刚刚添加的定制任务。

> ./gradlew tasks

分析并调试您的构建

Gradle也提供了一个丰富的、基于 web的构建视图,我们称之为 build scan(构建扫描)。

 

【工欲善其事必先利其器·构建工具】Gradle使用教程·创建新的构建

通过使用--scan选项或显式地将build scan插件应用于您的项目,您可以在scans.gradle.com免费创建一个build scan(创建build scan的相关文档后续发布)。发布构建扫描到https://scans.gradle.com 网站,将这些数据传输到Gradle的服务器。如果想要将数据保存在自己的服务器上,请查看Gradle Enterprise

尝试通过添加--scan在执行任务时进行扫描来创建构建扫描:

❯ ./gradlew zip --scan  

如果您浏览您的构建扫描,您应该能够很容易地找出执行了哪些任务,它们花费了多长时间,应用了哪些插件,等等。下次在*上调试东西时,可以考虑共享一个构建扫描。

有关如何配置和使用 build scan的更多信息,请参见 build scan插件用户手册

探索更多有用的属性

使用 properties命令可以告诉您项目的属性:

❯ ./gradlew properties

> Task :properties

------------------------------------------------------------
Root project
------------------------------------------------------------

buildDir: /Users/.../basic-demo/build
buildFile: /Users/.../basic-demo/build.gradle.kts
description: null
group:
name: basic-demo
projectDir: /Users/.../basic-demo
version: unspecified

BUILD SUCCESSFUL

name匹配项目的名称,您也可以定义项目的group和version属性,但目前这个示例项目它们采用默认值,如description。

默认情况下,buildFile属性是构建脚本的完全限定路径名,它驻留在projectDir中。

您可以更改许多properties。例如,您可以尝试将以下代码添加到构建脚本文件中,然后重新执行gradle properties 命令。

 

下一步

恭喜您!您已经创建了一个新的 Gradle构建并学会了如何检查 Gradle构建!接下来还有更多的文档帮助您学习如何使用Gradle构建,敬请期待!