Gradle学习[4]——Task
Gradle学习[4]——Task
Task其实就是一段代码组成的一个逻辑。比如编译Java代码的classes Task。
Gradle 中所有操作都是基于任务完成的。
简单示例
一般使用方式:
1 |
|
其他的使用方式:
1 |
|
创建
任务创建方式,总体分为两大类:
- 通过 Project 中的task()方法
- 通过tasks 对象的 create 或者register 方法。
Task类型
自定义的Task是属于DefaultTask 类型,Gradle自带了一些现成的Task提供给我们,我们只需要在创建Task的时候指定一个type即可:
任务类型 | 作用 |
---|---|
Delete | 删除文件或目录 |
Copy | 将文件复制到目标目录中。此任务还可以在复制时重命名和筛选文件。 |
CreateStartScripts | 创建启动脚本 |
Exec | 执行命令行进程 |
GenerateMavenPom | 生成 Maven 模块描述符(POM)文件。 |
GradleBuild | 执行 Gradle 构建 |
Jar | 组装 JAR 归档文件 |
JavaCompile | 编译 Java 源文件 |
Javadoc | 为 Java 类 生 成 HTML API 文 档 |
PublishToMavenRepository | 将 MavenPublication 发布到 mavenartifactrepostal。 |
Tar | 组装 TAR 存档文件 |
Test | 执行 JUnit (3.8.x、4.x 或 5.x)或 TestNG 测试。 |
Upload | 将 Configuration 的构件上传到一组存储库。 |
War | 组装 WAR 档案。 |
Zip | 组装 ZIP 归档文件。默认是压缩 ZIP 的内容。 |
执行顺序
在 Gradle 的 Task 中,有三种方式可以指定 Task 执行顺序:
1、dependsOn 强依赖方式
2、通过 Task 输入输出
3、通过 API 指定执行顺序
依赖方式
参数依赖
1 |
|
内部依赖
1 |
|
外部依赖
1 |
|
跨项目依赖
在subproject01 工程的 build.gradle 文件中定义:
1 |
|
在subproject02 工程的 build.gradle 文件中定义:
1 |
|
补充
当一个 Task 依赖多个Task 的时候,被依赖的Task 之间如果没有依赖关系,那么它们的执行顺序是随机的,并无影响。
执行
任务执行语法:gradle [taskName…] [–option-name…]
详细则参考官方文档,一下为整理列出的表格:
分类 | 解释 |
---|---|
常见的任务(*) | gradle build: 构建项目:编译、测试、打包等操作 gradle run :运行一个服务,需要application 插件支持,并且指定了主启动类才能运行 gradle clean: 请求当前项目的 build 目录 gradle init : 初始化 gradle 项目使用 gradle wrapper:生成wrapper 文件夹的。 ● gradle wrapper 升级wrapper 版本号:gradle wrapper –gradle-version=4.4 ● gradle wrapper –gradle-version 5.2.1 –distribution-type all :关联源码用 |
项目报告相关任务 | gradle projects : 列出所选项目及子项目列表,以层次结构的形式显示 gradle tasks: 列出所选项目【当前 project,不包含父、子】的已分配给任务组的那些任务。 gradle tasks –all :列出所选项目的所有任务。 gradle tasks –group=”build setup”:列出所选项目中指定分组中的任务。 gradle help –task someTask :显示某个任务的详细信息 gradle dependencies :查看整个项目的依赖信息,以依赖树的方式显示 gradle properties 列出所选项目的属性列表 |
调试相关选项 | -h,–help: 查看帮助信息 -v, –version:打印 Gradle、 Groovy、 Ant、 JVM 和操作系统版本信息。 -S, –full-stacktrace:打印出所有异常的完整(非常详细)堆栈跟踪信息。 -s,–stacktrace: 打印出用户异常的堆栈跟踪(例如编译错误)。 -Dorg.gradle.daemon.debug=true: 调试 Gradle 守护进程。 -Dorg.gradle.debug=true:调试 Gradle 客户端(非 daemon)进程。 -Dorg.gradle.debug.port=(port number):指定启用调试时要侦听的端口号。默认值为 5005。 |
性能选项:【备注: 在gradle.properties 中指定这些选项中的许多选项,因此不需要命令行标志】 | –build-cache, –no-build-cache: 尝试重用先前版本的输出。默认关闭(off)。 –max-workers: 设置 Gradle 可以使用的woker 数。默认值是处理器数。 -parallel, –no-parallel: 并行执行项目。有关此选项的限制,请参阅并行项目执行。默认设置为关闭(off) |
守护进程选项 | –daemon, –no-daemon: 使用 Gradle 守护进程运行构建。默认是on –foreground:在前台进程中启动 Gradle 守护进程。 -Dorg.gradle.daemon.idletimeout=(number of milliseconds): Gradle Daemon 将在这个空闲时间的毫秒数之后停止自己。默认值为 10800000(3 小时)。 |
日志选项 | -Dorg.gradle.logging.level=(quiet,warn,lifecycle,info,debug): 通过 Gradle 属性设置日志记录级别。 -q, –quiet: 只能记录错误信息 -w, –warn: 设置日志级别为 warn -i, –info: 将日志级别设置为 info -d, –debug:登录调试模式(包括正常的堆栈跟踪) |
其它(*) | -x:-x 等价于: –exclude-task : 常见gradle -x test clean build –rerun-tasks: 强制执行任务,忽略up-to-date ,常见gradle build –rerun-tasks –continue: 忽略前面失败的任务,继续执行,而不是在遇到第一个失败时立即停止执行。每个遇到的故障都将在构建结束时报告,常见:gradle build –continue。 gradle init –type pom :将maven 项目转换为gradle 项目(根目录执行) gradle [taskName] :执行自定义任务 |
Gradle学习[4]——Task
https://blog.gugu.dev/2024-02-21/Gradle学习-4-——Task/