Gradle项目和任务

本文概述

  • Gradle任务
  • 摇篮项目
  • 任务类型
gradle构建由一个或多个项目组成。 Gradle中的所有内容都基于项目和任务。
Gradle任务 在Gradle中, 任务是构建执行的单个工作单元, 这些任务可以是编译类, 创建JAR, 生成Javadoc以及将一些存档发布到存储库等等。对于构建过程, 可以将其视为单个工作。
Gradle的优势在于他可扩展的模型。任务是此模型的核心。任务是Gradle运作的独立单元。一项任务的实质是其行动。例如, 我们可以声明一个任务来编译Java源代码或将一些数据从一个目录复制到另一个目录。一个任务可以孤立地执行某些操作, 但是我们也可以声明对其他任务的依赖。任务还可以定义其输入和从中读取和写入的文件的输出。这使Gradle可以确定是否需要完成任务。
摇篮项目 在Gradle中, 项目显示库JAR或Web应用程序。它还可以提供分发ZIP, 该分发ZIP是由其他项目产生的JAR组装而成的。一个项目可能会将我们的应用程序部署到暂存或生产环境中。 Gradle中的每个项目都由一个或多个任务组成。
在Gradle中, 项目是一个或多个任务的集合。项目代表图书馆JAR或Web应用程序。它还可以服务于分发ZIP, 该分发ZIP是由不同项目的JAR组装而成的。一个项目可能会将我们的应用程序部署到暂存或生产环境中。一个项目可能会将我们的应用程序部署到暂存或生产环境中。每个Gradle构建都包含一个或多个项目。我们可以将其与建筑物的实例联系起来;它可以有任意数量的楼层。
任务类型 Gradle中有两种任务。它们如下:
  • 默认任务
  • 自定义任务
默认任务
默认任务是Gradle的预定义任务。我们可以在我们的项目中定义它。如果未指定其他任务, Gradle让我们定义一个或多个默认任务。
【Gradle项目和任务】我们可以通过运行gradle task命令列出默认任务。考虑以下输出:
Gradle项目和任务

文章图片
自定义任务
Gradle允许我们创建任务;这些任务称为自定义任务。定制任务是用户定义的任务, 旨在执行某些特定的工作。
句法:
Task task_name{ group "-------group_name for task-------' description '-------description of the task-------' doLast{ -------code for execution-----------------------------------------------------------------------------}}

请按照以下步骤创建自定义任务:
步骤1:创建一个Gradle项目。要创建Gradle项目, 请打开eclipse并导航到new-> other, 然后选择Gradle项目。之后, 请执行一些必要的步骤。
步骤2:探索项目并打开build.gradle文件。
Gradle项目和任务

文章图片
步骤3:在build.gradle文件中添加任务代码。考虑下面的示例:
task srcmini_task{ group "Custom task" description "srcmini Gradle Custom task Example." doLast{println "Welcome to srcmini. It is a Custom task Example."; }}

步骤4:打开命令行并将目录更改为Gradle项目的位置。此外, 我们可以从Eclipse中执行此操作, 右键单击项目并选择属性。
Gradle项目和任务

文章图片
单击资源, 然后单击位置。
Gradle项目和任务

文章图片
在地址栏中键入cmd以在此目录中打开命令行
Gradle项目和任务

文章图片
步骤5:要了解默认任务并在项目中定义任务, 请键入gradletasks命令。
Gradle项目和任务

文章图片
步骤6:现在, 要执行我们的自定义任务, 请运行命令gradle taskname(由于任务名称是srcmini, 因此gradle srcmini)。考虑以下输出:
Gradle项目和任务

文章图片
使用DSL特定语法定义任务
在新文件夹中, 使用以下代码创建一个build.gradle文件(以Groovy DSL编写)或一个build.gradle.kts文件(以Kotlin DSL编写):
tasks.register("hello") { doLast { println 'Hello, World!'}}

上面的Groovy代码将注册一个名为hello的新必需任务, 并将消息打印到控制台。
保存文件并运行以下命令:
用以下代码写在Kotlin DSL中):

gradle tasks --all.

我们的新任务将出现在其他任务下。
要验证我们的任务已创建, 请运行以下命令:
gradle tasks --all

使用字符串作为任务名称定义任务:
我们可以使用字符串作为任务名称来定义任务。例如, 我们要定义一个任务名称“ hello”, 将以下代码放入build.gradle文件中:
build.gradletask('hello') {doLast {println "hello"}}task('copy', type: Copy) {from(file('srcDir'))into(buildDir)}

还有另一种定义任务的方法(我们也可以使用任务容器来定义任务)。
使用任务容器定义任务:
TaskContainer管理一组Task实例。我们可以通过调用Project.getTasks()访问TaskContainer实例, 也可以在构建脚本中使用task属性。
使用TaskContainer定义任务的“ hello world”示例如下:
build.gradletasks.create('hello') {doLast {println "hello"}}tasks.create('copy', Copy) {from(file('srcDir'))into(buildDir)}

在这里, 我们可以将任务添加到任务集合中。
自定义任务中的doFirst和doLast块
在Gradle中, doFirst和doLast是两个不同的自定义任务块。这些块在块部分中定义。在doFirst块中, 我们确定要首先执行的任务, 而doLast块最后用于运行该任务。考虑下面的代码片段:
task A{ doFirst{println "Hello welcome to srcmini" } doLast{println "Thank You Bye Bye." }}

在Gradle中复制任务
Gradle允许我们将任务从一个目录复制到另一目录。以下语法用于复制任务:
task task_name(type: Copy){ From "--------------------DirectoryPath----------------" Into " --------------------DirectoryPath----------------"}

任务分组
在Gradle中, 我们可以将任务分组。要对任务进行分组, 我们将对所有任务使用相同的组名。要对名为srcmini1和srcmini2的两个任务进行分组, 请将以下代码写入build.gradle文件:
task srcmini1{ group "srcmini_task" doLast{println "This is a task 1." }}task srcmini2{ group "srcmini_task" doLast{println "This is a task 2." }}

跳过任务
在Gradle中, 有多种方法可以跳过任务的执行。要跳过任务, 请在任务代码上附加onlyIf()。考虑下面的代码片段:
task srcmini1{ group "srcmini_task1" doLast{println "This is a task." }}srcmini1.onlyIf{ project.hasProperty('doOperation')}

使用谓词跳过任务
在Gradle中, onlyif()方法可以附加谓词。在这种情况下, 仅在谓词为true时才执行任务。谓词实现为闭包, 并与参数一起传递。如果执行任务, 则返回true, 否则返回false。如果任务被跳过。谓词在任务之前被评估。考虑下面的代码片段:
task test_srcmini{ group "Task1" doLast{println "This is a task." }}test_srcmini.onlyIf{ !project.hasProperty('skipTest')}

使用StopExecutionException跳过任务
在Gradle中, 我们还可以使用StopExecutionException而不是谓词来跳过任务。如果将此异常引发给任务, 则将跳过该任务的操作, 并且构建将继续执行下一个任务。考虑下面的代码片段:
task compile{ doLast{println "Here we are compiling" }}compile.doFirst{ if (true) {throw new StopExecutionException() }}task srcmini (dependsOn: 'compile') { doLast{println 'i am not affected' }}

启用和禁用任务
Gradle允许我们启用和禁用任务;默认情况下, 它是启用的。要禁用任务, 我们必须将其标记为“跳过”。考虑下面的代码片段:
task srcmini_disableTask{ doLast{println "this statement should not be printed if the task is disabled."}}srcmini_disableTask.enabled = false

Gradle中的任务依赖
当一个任务依赖于另一个任务时, 使用任务依赖关系。与任务名称一起使用dependsOn关键字可以使任务依赖。
考虑下面的示例, 它包含两个名为srcminiOperation1和srcminiOperation2的任务。第二个任务的第一个任务带有“取决于”关键字, 这意味着第二个任务仅在第一个任务成功执行时执行:
task srcminiOperation1{ group "CustomTasks" doLast{println "This is operation 1 of srcmini" }}task srcminiOperation2(dependsOn: 'srcminiOperation1'){ group "CustomTasks" doLast{println "This is operation 2 of srcmini" }}

Gradle中任务的快捷方式表示法
我们可以创建现有任务的快捷方式, 每个任务都被视为构建脚本的属性。为此, 请在build.gradle文件中添加以下代码片段。
task srcmini { doLast {println 'Hello world!' }}srcmini.doLast { println "Greetings from the $srcmini.name task."}

任务中的自定义属性
在Gradle中, 我们可以创建属性并将其添加到任务中。要添加属性, 请将ext.myProperty设置为任务的初始值。考虑下面的代码片段:
task srcminiTask {ext.myProperty = "This is a custom property"}task printTask {doLast {println srcminiTask.myProperty}}

    推荐阅读