Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >10--Gradle进阶 - Gradle任务的执行

10--Gradle进阶 - Gradle任务的执行

作者头像
Devops海洋的渔夫
发布于 2023-09-01 00:54:13
发布于 2023-09-01 00:54:13
47100
代码可运行
举报
文章被收录于专栏:Devops专栏Devops专栏
运行总次数:0
代码可运行

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.4gradle 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 中所有操作都是基于任务完成的。

img

拓展 2:gradle 默认各指令之间相互的依赖关系:

相关解释:

img

操作示例

1. 常见的任务
1.1 gradle build: 构建项目:编译、测试、打包等操作

gradle build 可以中终端执行,也可以在 Idea 工具类执行,如下:

1.2. gradle run :运行一个服务,需要application 插件支持,并且指定了主启动类才能运行

首先我们需要先准备一个工程的启动类:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 插件。

并且定义启动类:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
plugins {
    id 'java'
    id 'application'
}

group 'com.lijw'
version '1.0-SNAPSHOT'

// 定义应用的主启动类
mainClassName = 'com.lijw.Application'

执行如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
gradle run
2. 项目报告相关任务
2.1 gradle projects : 列出所选项目及子项目列表,以层次结构的形式显示
2.2 gradle tasks: 列出所选项目【当前 project,不包含父、子】的已分配给任务组的那些任务

可以看到这些 task 是有分组的,但是由于我们之前写的task A B 没有分组,所以没有显示。而在 Idea 工具类,则会显示在 other 的分组中。

设置 task 任务分组:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 任务的依赖方式
// 方式一:参数方式依赖
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 如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
gradle tasks --group="abc"
2.5 gradle help --task someTask :显示某个任务的详细信息

下面来查看 task B 的详细信息,如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
gradle help --task B
2. 6 gradle dependencies :查看整个项目的依赖信息,以依赖树的方式显示
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
gradle dependencies
2.7 gradle properties 列出所选项目的属性列表
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
gradle properties
3.性能选项

可以在工程项目中创建 gradle.properties 配置一些全局的属性,如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 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
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-06-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 海洋的渔夫 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Gradle 进阶学习 之 Task
Gradle 项目的生命周期分为三大阶段: Initialization -> Configuration -> Execution. 每个阶段都有自己的职责。
叫我阿杰好了
2024/04/25
2980
Gradle 进阶学习 之 Task
第一个 Gradle 脚本及简单命令
task 代表一个任务 doLast 代表 task 最后执行的一个 action doLast 可以使用 <<更简单的来表达
三产
2021/01/12
7520
Android Gradle 编译常见优化手段
每个团队或许都有那么一个或两个比较关注工程编译耗时的同学,那么这篇文章就是分享给你的。
sickworm
2024/08/06
7050
Android Gradle 编译常见优化手段
重新认识AndroidStudio和Gradle,这些都是你应该知道的
本文要从AndroidStudio的环境安装升级,Gradle,Eclipse转AS,多渠道配置,Maven私服,Action,Option,快捷键等几个方面出发,讲一些操作技巧以及我对AndroidStudio使用的一些理解与经验。本文较全面的讲述了我们在开发中必须要了解的,比较多而全,可能不能马上记住,目的在于大家看完之后能有一个认识,在需要使用的时候知道有这么个东西。希望对你的开发工作有所帮助,不足之处,请批评指正。
open
2020/03/19
1K0
重新认识AndroidStudio和Gradle,这些都是你应该知道的
Gradle初探
task:构建脚本定义一个任务,并取名。doLast:构建脚本给任务添加一个动作Action,在task执行完毕后,要回调doLast这部分闭包的业务代码逻辑或者叫回调实现。
音视频开发进阶
2020/07/20
6790
Gradle—创建简单的项目
构建由一个或多个项目组成。项目的概念很抽象,它取决于你要用Gradle 做什么 。项目可以是 一个 Jar 库或者一个 web 程序。也可以是一个 zip 压缩包,也可以是将项目部署到生产环境等等;
佛系编码
2019/12/11
1.3K0
Gradle—创建简单的项目
Gradle入门基础一
最近项目中使用到了Gradle所以就抓紧学习了一下。以下资料来自互联网,属于个人整理。图片如有侵权会删除
@派大星
2023/06/28
2430
Gradle入门基础一
Gradle 中的Task
项目实质上是 Task 对象的集合。一个 Task 表示一个逻辑上较为独立的执行过程,比如编译 Java 源代码,拷贝文件, 打包 Jar 文件,甚至可以是执行一个系统命令。另外,一个 Task 可以读取和设置 Project 的 Property 以完成特定的操作。
鱼找水需要时间
2023/02/16
1.3K0
Gradle 中的Task
Gradle入门前奏
在文章为什么现在要用Gradle?中,我们学习了常见的构建工具,以及Gradle与这些构建工具相比有那些不同的特性。这一篇文章我们接着来学习Gradle入门需要掌握的知识,包括配置环境、实现Hello World、Gradle的任务、Gradle日志和Gradle命令行,掌握这些能够更好的理解Gradle。
用户1269200
2018/10/25
7200
Gradle入门前奏
Gradle学习笔记 Gradle命令行
安装好Gradle之后,就可以使用Gradle命令行了。首先我们先新建一个文件夹gradle-learn,然后在其中新建一个build.gradle,这是Gradle的项目构建文件。
乐百川
2022/05/05
7830
Gradle 进阶学习 之 build.gradle 文件
sourceCompatibility: 指定使用哪个版本的JDK语法来编译源代码。这与编译环境有关,且需要Java插件支持。
叫我阿杰好了
2024/05/05
1.6K0
Gradle 进阶学习 之 build.gradle 文件
最新版gradle安装使用简介
gradle的最新版本是6.7,从2009年的第一个版本,到2020年的6.7,已经发展了11年了。gradle是作为android的官方构建工具引入的,除了java,它还能够支持多种语言的构建,所以用途非常广泛。
程序那些事
2021/02/07
1.3K0
为什么说 Gradle 是 Android 进阶绕不去的坎
Gradle 作为官方主推的构建系统,目前已经深度应用于 Android 的多个技术体系中,例如组件化开发、产物构建、单元测试等。可见,要成为 Android 高级工程师 Gradle 是必须掌握的知识点。在这篇文章里,我将带你由浅入深建立 Gradle 的基本概念,涉及 Gradle 生命周期、Project、Task 等知识点,这些内容也是 Gradle 在面试八股文中容易遇见的问题。
用户9995743
2022/09/26
2.6K0
为什么说 Gradle 是 Android 进阶绕不去的坎
Gradle秘籍 顶
帮助: gradle -h `-?, -h, --help` Shows this help message. `-a, --no-rebuild` Do no
白石
2019/08/23
3910
Gradle For Android(1)--使用AndroidStudio开始Gradle
build.gradle是为了构建Android项目的脚本。Gradle构建脚本并不是使用传统的XML,而是基于Groovy的domain-specific language (DSL),而这种动态语言是为了JVM使用的。也就说明,我们可以使用任何一种基于JVM的语言来写自定义的插件。
None_Ling
2018/10/24
6670
Gradle 构建脚本基础(introductory tutorial)
每个 Gradle 构建都由一个或多个项目组成。 一个项目代表什么取决于你在 Gradle 上做什么。 例如,一个项目可能表示一个库 JAR 或一个 web 应用程序。 它可以表示从其他项目生成的 jar 组装起来的发行版 ZIP。 一个项目并不一定代表要构建的东西。 它可能代表要做的事情,比如将应用程序部署到登台或生产环境。 不要担心,如果这看起来有点含糊现在。 Gradle 的按惯例构建支持为项目增加了一个更具体的定义。
acc8226
2022/05/17
7990
gradle中的build script详解
build.gradle是gradle中非常重要的一个文件,因为它描述了gradle中可以运行的任务,今天本文将会带大家体验一下如何创建一个build.gradle文件和如何编写其中的内容。
程序那些事
2021/02/13
1.2K0
一篇文章掌握Gradle多项目构建
在使用 Android Studio 作为 IDE 之后,Android 项目就开始使用 Gradle 作为构建脚本,Gradle 的优点就不用我多说了,使用 Groovy 作为开发语言,配合各种 Gradle 插件和 DSL 可以实现多样化的构建过程。
蜻蜓队长
2018/08/03
1.3K0
Gradle从入门到了解 - 简书
Gradle(英[g'reɪdl])是一个任务驱动型的构建工具,是一个依赖管理工具,更是一个编程框架。 它抛弃了基于XML的各种繁琐配置,取而代之的是一种基于Groovy的内部领域特定(DSL)语言。 在android studio中,我们使用这个工具可以完成app的编译打包等工作。
用户2802329
2018/08/07
1.7K0
Gradle从入门到了解 - 简书
Gradle build.gradle 文件
提示 1:group+name+version 类似于 maven 的 group+artifactId+version 提示 2:encoding 解决业务代码与测试代码中文乱码问题
鱼找水需要时间
2023/02/16
1.2K0
Gradle build.gradle 文件
相关推荐
Gradle 进阶学习 之 Task
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验