10--Gradle进阶 - Gradle任务的执行
前言
在前面的篇章中,我们尝试执行了 gradle 的 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] :执行自定义任务 |
... |
更 详 细 请 参 考 官 方 文 档 : https://docs.gradle.org/current/userguide/command_line_interface.html#sec:command_line_executing_tasks
拓展:gradle 任务名是缩写: 任务名支持驼峰式命名风格的任务名缩写,如:connectTask 简写为:cT,执行任务 gradle cT。
拓展 1:前面提到的Gradle 指令本质:一个个的task[任务], Gradle 中所有操作都是基于任务完成的。
拓展 2:gradle 默认各指令之间相互的依赖关系:
相关解释:
操作示例
1. 常见的任务
1.1 gradle build
: 构建项目:编译、测试、打包等操作
gradle build
可以中终端执行,也可以在 Idea 工具类执行,如下:
1.2. gradle run
:运行一个服务,需要application 插件支持,并且指定了主启动类才能运行
首先我们需要先准备一个工程的启动类:
package com.lijw;
public class Application {
public static void main(String[] args) {
System.out.println("Hello world! root project");
}
}
“注意:需要先执行完 gradle build,编译好类,下面才可以执行。
”
在 root 工程的 build.gradle
设置 application
插件,如下:
可以看到设置插件后,idea工具类也会增加 application
插件。
并且定义启动类:
plugins {
id 'java'
id 'application'
}
group 'com.lijw'
version '1.0-SNAPSHOT'
// 定义应用的主启动类
mainClassName = 'com.lijw.Application'
执行如下:
gradle run
2. 项目报告相关任务
2.1 gradle projects
: 列出所选项目及子项目列表,以层次结构的形式显示
2.2 gradle tasks
: 列出所选项目【当前 project,不包含父、子】的已分配给任务组的那些任务
可以看到这些 task 是有分组的,但是由于我们之前写的task A B 没有分组,所以没有显示。而在 Idea 工具类,则会显示在 other
的分组中。
设置 task 任务分组:
// 任务的依赖方式
// 方式一:参数方式依赖
task A {
// 设置任务分组
group('abc')
doLast {
println "TaskA.."
}
}
task 'B' {
// 设置任务分组
group('abc')
doLast {
println "TaskB.."
}
}
//参数方式依赖: dependsOn后面用冒号
task 'C' {
// 设置任务分组
group('abc')
doLast {
println "TaskC.."
}
}
再次执行查看 task 任务,如下:
2.3 gradle tasks --all
:列出所选项目的所有任务
2.4 gradle tasks --group="build setup"
:列出所选项目中指定分组中的任务
我们来看看上面分组为 abc 的 task 如下:
gradle tasks --group="abc"
2.5 gradle help --task someTask
:显示某个任务的详细信息
下面来查看 task B 的详细信息,如下:
gradle help --task B
2. 6 gradle dependencies
:查看整个项目的依赖信息,以依赖树的方式显示
gradle dependencies
2.7 gradle properties
列出所选项目的属性列表
gradle properties
3.性能选项
可以在工程项目中创建 gradle.properties
配置一些全局的属性,如下:
# gradle.properties 里面定义的属性是全局的,可以在各个模块的 build.gradle 里面直接引用
# 当有一些数据我们传到 git 又不想给别人看的时候,就可以配置到 gradle.properties,然后不传这个文件上去
# 也可以在项目中对一些属性进行统一配置,提供开发效率
# JVM堆内存大小
org.gradle.jvmargs=-Xmx5120m -XX:MaxPermSize=1280m -Dfile.encoding=UTF-8
# 开启守护进程,下一次构建的时候,将会使用这个守护进程构建,而不是重新 fork 一个 gradle 构建进程
org.gradle.daemon=true
# 按需加载
org.gradle.configureondemand=true
# 并行编译
org.gradle.parallel=true
# 开启gradle缓存
org.gradle.caching=true