Gradle - 项目与任务

Gradle - 项目与任务 首页 / Gradle入门教程 / Gradle - 项目与任务

gradle构建由一个或多个项目组成。 Gradle中的所有内容都基于项目和任务。

Gradle Tasks

在Gradle中,任务(Tasks)是构建所执行的单个工作单元。这些任务可以是编译类(compiling classes),creating a JAR,GeneratingJavadoc,以及发布(publishing)到存储库中。对于构建过程,可以将其视为单个原子工作。

Gradle的优势在于他可扩展的模型。任务是此模型的核心。任务是Gradle运作的独立单元。一项任务的本质是行动。例如,无涯教程可以声明一个任务来编译 Java 源代码或将一些数据从一个目录复制到另一个目录。一个任务可以孤立地执行某些操作,但是也可以声明对其他任务的依赖。任务还可以定义其输入和从中读取和写入的文件的输出。这使Gradle可以确定是否需要完成任务。

Gradle Projects

在Gradle中,项目显示库JAR或Web应用程序。它还可以提供分发ZIP,该分发ZIP是由其他项目产生的JAR组装而成的。一个项目可能会将应用程序部署到暂存或生产环境。 Gradle中的每个项目都由一个或多个任务组成。

在Gradle中,项目是一个或多个任务的集合。项目代表library JAR或Web应用程序。它还可以服务于分发ZIP,该分发ZIP是由不同项目的JAR组装而成的。一个项目可能会将无涯教程的应用程序部署到暂存或生产环境。一个项目可能会将应用程序部署到暂存或生产环境中。每个Gradle构建都包含一个或多个项目。

Tasks 类型

Gradle中有两种任务。它们如下:

  • 默认任务(Default task)
  • 自定义任务(Custom task)

默认任务(Default Tasks)

默认任务是Gradle的预定义任务。可以在无涯教程的项目中定义它。如果没有指定其他任务,Gradle定义一个或多个默认任务。

可以通过运行gradle task命令列出默认任务。考虑以下输出:

摇篮项目 and Tasks

自定义任务(Custom tasks)

Gradle允许创建任务;这些任务称为自定义任务。自定义任务是用户定义的任务,旨在执行某些特定的工作。

链接:https://www.learnfk.comhttps://www.learnfk.com/gradle/gradle-projects-and-tasks.html

来源:LearnFk无涯教程网

语法:

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 文件。

摇篮项目 and Tasks

第3步  -   build.gradle 文件中添加任务代码。考虑下面的示例:

task Learnfk_task{
	group "Custom task"
	description "Learnfk Gradle Custom task Example."
	doLast{
		println "Welcome to Learnfk. It is a Custom task Example.";
	}
} 

第4步  -  打开命令行并将目录更改为Gradle项目的位置。此外,无涯教程可以从Eclipse中执行此操作,右键单击项目并选择属性(Properties)。

摇篮项目 and Tasks

单击资源,然后单击位置。

摇篮项目 and Tasks

在地址栏中键入 cmd ,以打开此目录中的命令行

摇篮项目 and Tasks

第5步  -  要了解默认任务并在项目中定义任务,请键入 gradle tasks 命令。

摇篮项目 and Tasks

第6步   -  现在,要执行无涯教程的自定义任务,请运行命令 gradle taskname (由于任务名称是Learnfk,因此请gradle Learnfk)。考虑以下输出:

摇篮项目 and Tasks

使用DSL特定语法定义任务

在新文件夹中,使用以下命令创建一个 build.gradle 文件(以Groovy DSL编写),或一个 build.gradle.kts 文件(以Kotlin DSL编写)。以下代码:

tasks.register("hello") { 
    doLast { 
        println 'Hello, World!'
    }
}

上面的Groovy代码将注册一个名为hello的新必需任务,并将消息打印到控制台。

保存文件并运行以下命令:

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 Learnfk"
	}
	doLast{
		println "Thank You Bye Bye."
	}
}

在Gradle中复制任务

Gradle允许将任务从一个目录复制到另一目录。以下语法用于复制任务:

task task_name(type: Copy){
	From "--------------------DirectoryPath----------------"
	Into " --------------------DirectoryPath----------------"
}

任务分组

在Gradle中,无涯教程可以将任务分组。要对任务进行分组,将对所有任务使用相同的组名。要对名为Learnfk1和Learnfk2的两个任务进行分组,请将以下代码写入build.gradle文件:

task Learnfk1{
	group "Learnfk_task"
	doLast{
		println "This is a task 1." 
	}
}
task Learnfk2{
	group "Learnfk_task"
	doLast{
		println "This is a task 2." 
	}
}

跳过任务

在Gradle中,有多种方法可以跳过任务的执行。要跳过任务,请在任务代码中附加 onlyIf()。考虑以下代码片段:

task Learnfk1{
	group "Learnfk_task1"
	doLast{
		println "This is a task." 
	}
}
Learnfk1.onlyIf{
	project.hasProperty('doOperation')
}

使用谓词跳过任务

在Gradle中, onlyif()方法可以附加谓词。在这种情况下,仅当谓词为true时才执行任务。谓词实现为闭包,并与参数一起传递。如果执行任务,则返回true,否则返回false。如果任务被跳过。谓词在任务之前被评估。考虑以下代码片段:

task test_Learnfk{
	group "Task1"
	doLast{
		println "This is a task." 
	}
}
test_Learnfk.onlyIf{
	!project.hasProperty('skipTest')
}

使用StopExecutionException跳过任务

在Gradle中,还可以使用 StopExecutionException 代替谓词来跳过任务。如果将此异常引发给任务,则将跳过该任务的操作,并且构建将继续执行下一个任务。考虑以下代码片段:

task compile{
	doLast{
		println "Here we are compiling"
	}
}
compile.doFirst{
	if (true)
	{
		throw new StopExecutionException()
	}
}
task Learnfk (dependsOn: 'compile') {
	doLast{
		println 'i am not affected'
	}
}

启用和禁用任务

Gradle允许启用和禁用任务;默认情况下,它是启用的。要禁用任务,必须将其标记为SKIPPED。考虑以下代码片段:

task Learnfk_disableTask{
	doLast{
		println "this statement should not be printed if the task is disabled."
		}
}
Learnfk_disableTask.enabled = false

Gradle任务依赖

当一个任务依赖于另一个任务时,使用任务依赖关系。 dependsOn 关键字与任务名称一起使用以使任务依赖。

考虑下面的示例,它包含两个名为LearnfkOperation1和LearnfkOperation2的任务。第二个任务的第一个任务带有'depends'关键字,这意味着第二个任务仅在第一个任务成功执行后才执行:

task LearnfkOperation1{
	group "CustomTasks"
	doLast{
		println "This is operation 1 of Learnfk"
	}
}
task LearnfkOperation2(dependsOn: 'LearnfkOperation1'){
	group "CustomTasks"
	doLast{
		println "This is operation 2 of Learnfk"
	}
}

Gradle中任务的快捷方式表示法

可以创建现有任务的快捷方式,每个任务都被视为构建脚本的属性。为此,请在build.gradle文件中添加以下代码片段。

task Learnfk {
	doLast {
		println 'Hello world!'
	}
}
Learnfk.doLast {
	println "Greetings from the $Learnfk.name task."
}

任务中的自定义属性

在Gradle中,无涯教程可以创建属性并将其添加到任务中。要添加属性,请将 ext.myProperty 设置为任务的初始值。考虑以下代码片段:

task LearnfkTask {
    ext.myProperty = "This is a custom property"
}
task printTask {
    doLast {
        println LearnfkTask.myProperty
    }
}

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

从0开始学游戏开发 -〔蔡能〕

程序员的数学基础课 -〔黄申〕

深入拆解Tomcat & Jetty -〔李号双〕

检索技术核心20讲 -〔陈东〕

分布式系统案例课 -〔杨波〕

Go 语言项目开发实战 -〔孔令飞〕

说透低代码 -〔陈旭〕

快手 · 移动端音视频开发实战 -〔展晓凯〕

Midjourney入门实践课 -〔Jovi〕

好记忆不如烂笔头。留下您的足迹吧 :)