个性化阅读
专注于IT技术分析

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 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.gradle
task('hello') {
    doLast {
        println "hello"
    }
}
task('copy', type: Copy) {
    from(file('srcDir'))
    into(buildDir)
}

还有另一种定义任务的方法(我们也可以使用任务容器来定义任务)。

使用任务容器定义任务:

TaskContainer管理一组Task实例。我们可以通过调用Project.getTasks()访问TaskContainer实例, 也可以在构建脚本中使用task属性。

使用TaskContainer定义任务的“ hello world”示例如下:

build.gradle
tasks.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
    }
}

赞(0)
未经允许不得转载:srcmini » Gradle项目和任务

评论 抢沙发

评论前必须登录!