gradle构建由一个或多个项目组成。 Gradle中的所有内容都基于项目和任务。
在Gradle中,任务(Tasks)是构建所执行的单个工作单元。这些任务可以是编译类(compiling classes),creating a JAR,GeneratingJavadoc,以及发布(publishing)到存储库中。对于构建过程,可以将其视为单个原子工作。
Gradle的优势在于他可扩展的模型。任务是此模型的核心。任务是Gradle运作的独立单元。一项任务的本质是行动。例如,无涯教程可以声明一个任务来编译 Java 源代码或将一些数据从一个目录复制到另一个目录。一个任务可以孤立地执行某些操作,但是也可以声明对其他任务的依赖。任务还可以定义其输入和从中读取和写入的文件的输出。这使Gradle可以确定是否需要完成任务。
在Gradle中,项目显示库JAR或Web应用程序。它还可以提供分发ZIP,该分发ZIP是由其他项目产生的JAR组装而成的。一个项目可能会将应用程序部署到暂存或生产环境。 Gradle中的每个项目都由一个或多个任务组成。
在Gradle中,项目是一个或多个任务的集合。项目代表library JAR或Web应用程序。它还可以服务于分发ZIP,该分发ZIP是由不同项目的JAR组装而成的。一个项目可能会将无涯教程的应用程序部署到暂存或生产环境。一个项目可能会将应用程序部署到暂存或生产环境中。每个Gradle构建都包含一个或多个项目。
Gradle中有两种任务。它们如下:
默认任务是Gradle的预定义任务。可以在无涯教程的项目中定义它。如果没有指定其他任务,Gradle定义一个或多个默认任务。
可以通过运行gradle task命令列出默认任务。考虑以下输出:
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 文件。
第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)。
单击资源,然后单击位置。
在地址栏中键入 cmd ,以打开此目录中的命令行
第5步 - 要了解默认任务并在项目中定义任务,请键入 gradle tasks 命令。
第6步 - 现在,要执行无涯教程的自定义任务,请运行命令 gradle taskname (由于任务名称是Learnfk,因此请gradle Learnfk)。考虑以下输出:
在新文件夹中,使用以下命令创建一个 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) }
在这里,无可以将任务添加到任务集合中。
在Gradle中,doFirst和doLast是两个不同的自定义任务块。这些块在块部分中定义。在doFirst块中,无涯教程确定要首先执行的任务,而doLast块最后用于运行该任务。考虑以下代码片段:
task A{ doFirst{ println "Hello welcome to Learnfk" } doLast{ println "Thank You Bye Bye." } }
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') }
在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
当一个任务依赖于另一个任务时,使用任务依赖关系。 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" } }
可以创建现有任务的快捷方式,每个任务都被视为构建脚本的属性。为此,请在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 } }
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)