gradle 指南之创建新的Gradle构建

创建新的Gradle构建

遵循本指南,您将创建一个简单的Gradle项目,调用一些基本的Gradle命令,并了解Gradle如何管理项目。

你需要什么

  • 大约11分钟
  • 终端或IDE应用程序
  • Java Development Kit(JDK),版本为1.7或更高版本(仅用于运行Gradle)
  • 一个Gradle,版本4.7或更高

初始化一个项目

首先,让我们创建一个新的目录,我们的项目将发挥作用。

❯mkdir basic-demo
❯cd basic-demo

现在我们可以使用Gradle的init命令来生成一个简单的项目。我们将探索所有产生的事情,以确切知道发生了什么。

❯gradle init
启动Gradle守护进程(后续的构建会更快)

3s成功制造
2个可执行的任务:2个执行

该命令应显示“BUILD SUCCESSFUL”并生成以下“空”项目。如果没有,请确保Gradle 安装正确,并且JAVA_HOME环境变量设置正确。
这是Gradle为您生成的。

。
├──build.gradle  1⃣️
├──gradle
│└──包装
│├──gradle-wrapper.jar  2⃣️
│└──gradle-wrapper.properties  3⃣️
├──gradlew  4
├──gradlew.bat  5
└──settings.gradle  6
  1. 项目配置脚本,用于配置当前项目中的任务
  2. Gradle Wrapper可执行文件JAR
  3. Gradle Wrapper配置属性
  4. 用于基于Unix的系统的Gradle Wrapper脚本
  5. 适用于Windows的Gradle Wrapper脚本
  6. 用于配置哪些项目参与构建的设置配置脚本

gradle init可以生成各种不同类型的项目,甚至可以知道如何将简单pom.xml文件转换为Gradle。

创建一个任务

Gradle提供了用于通过基于Groovy或Kotlin的DSL创建和配置任务的API。A Project包含一组Tasks,每个s执行一些基本操作。
Gradle附带一个可以在自己的项目中配置的任务库。例如,有一种称为的核心类型Copy,它将文件从一个位置复制到另一个位置。这个Copy任务非常有用(详情请参阅文档),但在这里,再次,让我们保持简单。执行以下步骤:

  1. 创建一个名为的目录src。
  2. 添加目录中调用myfile.txt的src文件。内容是任意的(甚至可以是空的),但为了方便,将单行添加Hello, World!到它。
  3. 在主构建文件中定义一个叫做copytype 的任务Copy(注意大写字母)build.gradle,它将src目录复制到一个名为的新目录中dest。(您不必创建dest目录 - 任务将为您完成)。
task copy(type: Copy, group: "Custom", description: "Copies sources to the dest directory") {
    from "src"
    into "dest"
}

在这里,group并且description可以是你想要的任何东西。你甚至可以忽略它们,但是这样做也会在tasks报告中忽略它们,稍后会用到它们。
现在执行你的新copy任务:

gra ./gradlew复制
:复制

0s成功建立
1个可执行任务:1个执行

验证它的工作通过检查,现在有一个名为预期myfile.txt在dest目录中,并且它的内容匹配在同一个内容src目录。

应用一个插件

Gradle包含一系列插件,Gradle插件门户中提供了许多更多的插件。插件中包含的其中一个插件就是base插件。结合调用的核心类型Zip,您可以使用配置的名称和位置创建项目的zip存档。

使用语法将base插件添加到build.gradle文件中plugins。确保plugins {}在文件顶部添加该块。

plugins {
    id "base"
}

... rest of the build file ...

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

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

该base插件与设置工作,以创建一个名为存档文件basic-demo-1.0.zip中build/distributions的文件夹。
在这种情况下,只需运行新zip任务并查看生成的zip文件就是您期望的。

❯./gradlew zip
:压缩

0s成功建立
1个可执行任务:1个执行

探索和调试你的构建

让我们来看看在我们的新项目中我们还能用Gradle做些什么。还提供了对命令行界面的完整引用

发现可用tasks

gra ./gradlew任务

>任务:任务

-------------------------------------------------- ----------
所有可从根项目运行的任务
-------------------------------------------------- ----------

存档任务
-------------
zip  - 将源文件归档为zip文件

构建任务
-----------
组装 - 组装这个项目的输出。
构建 - 组装并测试此项目。
清除 - 删除构建目录。

构建安装任务
-----------------
init  - 初始化一个新的Gradle构建。
包装器 - 生成Gradle包装器文件。

自定义任务
------------
复制 - 只需将源复制到构建目录

帮助任务
----------
buildEnvironment  - 显示在根项目“basic-demo”中声明的所有buildscript依赖项。
组件 - 显示根项目“basic-demo”生成的组件。[孵育]
依赖项 - 显示在根项目'basic-demo'中声明的所有依赖项。
dependencyInsight  - 显示对根项目“basic-demo”中特定依赖项的洞察。
dependentComponents  - 显示根项目“basic-demo”中组件的相关组件。[孵育]
帮助 - 显示帮助信息。
模型 - 显示根项目'basic-demo'的配置模型。[孵育]
项目 - 显示根项目'basic-demo'的子项目。
属性 - 显示根项目'basic-demo'的属性。
任务 - 显示可从根项目'basic-demo'运行的任务。

验证任务
------------------
检查 - 运行所有检查。

规则
-----
模式:清理<TaskName>:清理任务的输出文件。
模式:build <ConfigurationName>:组装组件的工件。
模式:upload <ConfigurationName>:组装并上传属于配置的工件。

要查看所有任务和更多详细信息,请运行gradlew tasks --all

要查看有关任务的更多详细信息,请运行gradlew help --task <task>

0s成功建立
1个可执行任务:1个执行

分析和调试你的构建

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

通过使用该–scan选项或通过将项目扫描插件明确应用到项目中,您可以免费在链接scans.gradle.com上创建构建扫描。将构建扫描发布到scans.gradle.com 将此数据传输到Gradle的服务器。要将数据保存在您自己的服务器上,请查看Gradle Enterprise。
尝试–scan在执行任务时添加构建扫描。

❯./gradlew zip --scan

0s成功建立
1个可执行的任务:1个最新的

将构建扫描发布到scans.gradle.com需要接受https://scans.gradle.com/terms-of-service中定义的服务条款。你接受这些条款吗?[是的,没有]
Gradle Cloud Services许可协议已被接受。

发布构建扫描...
https://gradle.com/s/repnge6srr5qs

如果您浏览构建扫描,则应该能够轻松找出执行哪些任务以及执行多长时间,应用了哪些插件等等。下次您在StackOverflow上调试某些内容时,请考虑共享构建扫描。
详细了解如何在Build Scan Plugin用户手册中配置和使用构建扫描。

发现可用的属性

该properties命令会告诉您关于项目的属性。

gra ./gradlew属性

这里只是一些可用的属性:

>任务:属性

-------------------------------------------------- ----------
根项目
-------------------------------------------------- ----------

buildDir:/Users/.../basic-demo/build
buildFile:/Users/.../basic-demo/build.gradle
描述:null
组:
名称:basic-demo
projectDir:/Users/.../basic-demo
版本:未指定

建立成功

该name项目的默认名称与该文件夹的名称相匹配。您也可以指定group和version属性,但目前它们按照原样采用默认值description。
该buildFile属性是完全限定的路径名build.gradle,它位于buildDir - 默认情况下,位于包含该文件的目录的build子目录中。projectDirbuild.gradle
您可以更改许多属性。例如,您可以尝试将以下行添加到build.gradle文件中,然后重新执行gradle properties。

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

下一步