Gradle学习笔记 Gradle命令行

2023-11-07

执行多个任务

安装好Gradle之后,就可以使用Gradle命令行了。首先我们先新建一个文件夹gradle-learn,然后在其中新建一个build.gradle,这是Gradle的项目构建文件。

task compile {
    doLast {
        println 'compiling source'
    }
}

task compileTest(dependsOn: compile) {
    doLast {
        println 'compiling unit tests'
    }
}

task test(dependsOn: [compile, compileTest]) {
    doLast {
        println 'running unit tests'
    }
}

task dist(dependsOn: [compile, test]) {
    doLast {
        println 'building the distribution'
    }
}

Gradle执行的基本单元是任务,在上面我们定义了4个任务。这4个任务之间还存在依赖关系,使用dependsOn定义。然后我们使用Gradle运行dist和test任务,会发现Gradle会分析这几个任务之间的依赖关系,依次运行它们,gradle dist test

结果如下。

$ gradle dist test
:compile
compiling source
:compileTest
compiling unit tests
:test
running unit tests
:dist
building the distribution

BUILD SUCCESSFUL

Total time: 2.22 secs

排除任务

可以用-x参数排除某个任务。现在我们运行dist而不运行test:gradle dist -x test。然后查看一下输出,我们会发现输出非常有趣。

$ gradle dist -x test
:compile
compiling source
:dist
building the distribution

BUILD SUCCESSFUL

Total time: 2.277 secs

仔细研究一下就会发现Gradle非常智能,会自动选择最优的执行路线。由于排除了test任务,所以compileTest任务其实也不需要了,因为它仅仅被test依赖。由于compile任务也是dist需要的,所以必须被执行。我们可以看到,Gradle会自动选择最优的执行路线

出错时继续执行

默认情况下如果构建过程出现错误Gradle就会停止构建,我们可以使用--continue参数让Gradle在出现错误的时候继续执行构建过程,直到每个任务都运行完毕。然后Gradle会报告所有错误。这个选项通常用来发现构建过程中的所有错误。

任务的缩写

在运行Gradle的时候我们不用完整输入任务名称,如果任务的前几个字母就可以区分任务,我们就可以只输入这几个字母。比如gradle d相当于gradle dist。另外Gradle还支持驼峰命名法的缩写。比如说我们可以运行gradle cT,相当于gradle compileTest

选择构建文件

默认情况下Gradle会选择当前文件夹下的build.gradle作为构建文件。我们也可以手动使用-b参数指定其他的构建文件。比如新建一个子文件夹subdir并在其中添加一个myproject.gradle文件。

myproject.gradle文件内容如下:

task hello {
    doLast {
        println "using build file '$buildFile.name' in '$buildFile.parentFile.name'."
    }
}

然后我们来运行一下,gradle -q -b subdir/myproject.gradle hello。结果如下。

using build file 'myproject.gradle' in 'subdir'.

这里还使用了-q静默参数,功能是只显示任务输出,不显示其他构建过程的输出。对于多个文件夹的构建项目,还可以使用-p参数指定要使用的构建文件的文件夹,例如我们将subdir中的构建文件重命名为build.gradle,然后运行gradle -q -p subdir hello,会得到和上面类似的输出。

强制执行任务

一些任务特别是gradle自带的任务,都支持增量构建。这样的任务会在运行时候根据文件状态自己决定执行与否。如果有这样的任务,在运行的时候会显示一个UP-TO-DATE字样。我们可以通过--rerun-tasks参数强制任务完整执行。

获取构建信息

列出项目

我们可以通过在build.gradle文件中添加description = ...来为项目添加描述信息。比如我们现在向build.gradle添加下面一行:

description = 'This is some info'

如果项目中包含多个子项目的话,可以使用gradle -q projects列出所有项目的信息。结果如下。

$ gradle projects -q

------------------------------------------------------------
Root project - This is some info
------------------------------------------------------------

Root project 'gradle-learn' - This is some info
No sub-projects

To see a list of the tasks of a project, run gradle <project-path>:tasks
For example, try running gradle :tasks

列出任务

使用gradle -q tasks列出所有任务。结果如下。

$ gradle -q tasks

------------------------------------------------------------
All tasks runnable from root project - This is some info
------------------------------------------------------------

Build Setup tasks
-----------------
init - Initializes a new Gradle build. [incubating]
wrapper - Generates Gradle wrapper files. [incubating]

Help tasks
----------
buildEnvironment - Displays all buildscript dependencies declared in root project 'gradle-learn'.
components - Displays the components produced by root project 'gradle-learn'. [incubating]
dependencies - Displays all dependencies declared in root project 'gradle-learn'.
dependencyInsight - Displays the insight into a specific dependency in root project 'gradle-learn'.
help - Displays a help message.
model - Displays the configuration model of root project 'gradle-learn'. [incubating]
projects - Displays the sub-projects of root project 'gradle-learn'.
properties - Displays the properties of root project 'gradle-learn'.
tasks - Displays the tasks runnable from root project 'gradle-learn'.

Other tasks
-----------
dist

To see all tasks and more detail, run gradle tasks --all

To see more detail about a task, run gradle help --task <task>

我们可以看到dist任务在其他任务中。我们可以通过给任务添加信息来改变这些显示。添加添加任务描述和分组信息,让dist任务变成这样。

task dist(dependsOn: [compile, test]) {
    doLast {
        println 'building the distribution'
    }
    description = ' This is a dist info'
    group = 'build'
}

然后再次运行gradle -q tasks。会发现这次结果发生了变化。

另外还可以添加--all参数,显示出所有任务信息。

显示任务帮助

使用gradle help --task someTask来显示任务帮助。

显示执行顺序

使用-m参数可以以Dry Run的方式运行Gradle,在这种方式下不会执行任何任务,只会列出这些任务的执行顺序。例如:

$  gradle dist test -m
:compile SKIPPED
:compileTest SKIPPED
:test SKIPPED
:dist SKIPPED

BUILD SUCCESSFUL

Total time: 1.834 secs

还有其他一些命令行参数,由于和具体的项目有关,会在具体情况下说明。这里就不在列出了。

参考资料

https://docs.gradle.org/current/userguide/tutorial_gradle_command_line.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Gradle学习笔记 Gradle命令行 的相关文章

随机推荐

  • spring 事务传播级别

    spring事务传播级别 一 介绍 1 2 各种事务的解释 1 2 什么是嵌套事务 一 介绍 主要就是下面两张图 很重要 很重要 很重要 能够清晰的描述出 第一次事务 和 嵌套事务的 关系 记录一下 当前不存在事务 直接调用带有事务的方法
  • java 纯面向对象_为什么说Java语言是一门非常纯粹的面向对象编程语言?

    针对题主提的这个问题 我在此分享Naresh Joshi的一篇译文给你 希望对你理解这个问题有所帮助 在我刚开始学习 Java 的前面几年 我从书本里知道了 Java 是遵循 面向对象编程范式 Object Oriented Program
  • sybase常见语句

    文章目录 1 查看执行计划 2 用户管理 3 系统存储过程 4 页大小 5 设置数据库为单用户模式 6 清理过程缓存 7 更新统计值 8 重建索引 9 修改字段约束为null 10 修改字段长度 12 修改字段默认值 13 修改表名 14
  • 国内主要Android应用市场包名大全

    com tencent android qqdownloader 腾讯应用宝 com qihoo appstore 360手机助手 com baidu appsearch 百度手机助手 com xiaomi market 小米应用商店 co
  • 基于RISC-V的软件编译脚本

    脚本 设置RISC V工具链riscv set env RISC V setenv RISCV PATH mnt Software FreedomStudio SiFive riscv64 unknown elf gcc 8 1 0 201
  • swiper的使用,鼠标放上面停止变动

    swiper真的太好用了 根本停不下来 div class swiper container div class swiper wrapper flex div class swiper slide img class src home s
  • (一)seaborn教程——可视化统计关系

    简介 学习笔记为官网教程seaborn教程0 9 0 安装最新版本方法 pip install git https github com mwaskom seaborn git 导入包和设置背景 import numpy as np imp
  • 【蓝桥杯每日刷题】——分巧克力

    一 题目 儿童节那天有 K 位小朋友到小明家做客 小明拿出了珍藏的巧克力招待小朋友们 小明一共有 N 块巧克力 其中第 i 块是 Hi Wi 的方格组成的长方形 为了公平起见 小明需要从这 N 块巧克力中切出 K 块巧克力分给小朋友们 切出
  • Gitlab+P3C-PMD(Aliyun)标准化你团队的代码

    1 背景简介 项目越来越大 团队越来越大 代码越来越来多 然后就是各种五花八门的代码格式 代码规范 要做到代码规范我们可以采取代码交叉检视 IDEA Eclipse安装插件自检 以及代码管理服务端做校验 且不说各种方法的利弊 本文直接采用服
  • ctf中MD5绕过详细总结及例题[BJDCTF2020]Easy MD5

    一 首先是MD5 函数的作用 MD5 函数的作用是计算字符串的MD5散列 返回值 如果成功则返回已计算的 MD5 散列 如果失败则返回 FALSE 二 PHP 弱类型比较绕过 代码
  • QT数据库操作学习笔记1

    一 SQL模型的类 模型 视图结构 进行数据和界面的分离 模型 视图结构分为三部分 1 模型 model 与数据源通信 并为其他部件提供接口 与底层的数据打交道 2 视图 view 从模型中获取用来引用数据条目的模型索引 与显示打交道 3
  • 香港 单双线的区别?

    现在很多香港服务器商推出的主机产品 除了有操作系统之分外 还有单线香港服务器 双线香港服务器以及多线香港服务器的区分 但是 对于很多新手站长来说 并不清楚他们之间到底有什么差异 这里就来简单的解释下 其实 之所以有这么多线路 主要还是由于国
  • OpenCV中图像的缩放与旋转讲解及实战演示(附Python源码)

    需要源码请点赞关注收藏后评论区留言私信 几何变换是指改变图像的几何结构 例如大小 角度和形状等 让图像呈现出缩放 翻转 映射和透视效果 这些几何变换操作都涉及复杂 精密的计算 OpenCV将这些计算过程封装成非常灵活的方法 开发者只需修改一
  • 计算机格式字体颜色,电脑怎么设置不同的字体颜色样式

    电脑的字体可以随意设置颜色 根据自己喜好选择好看舒服的颜色 不过可能很多人不知道在哪里设置 下面由学习啦小编为你整理了电脑怎么设置系统字体颜色的相关方法 希望对你有帮助 电脑设置系统字体颜色的方法 右键点击桌面空白处 选择 个性化 进入 个
  • bugku 一段Base64

    题目是一大段base64 先解一下 看来一下不知道是什么类型的 百度一下发现 参考 那就用Converter这个工具 连续三次unescape 刚开始把输出的内容全部复制到输入 发现不对 要不字母和括号去掉 String fromCharC
  • 趣味程序(绘制圆与y=x^2与歌星大赛)

    实现y x 2与圆的图形叠加显示 程序图 运行结果 歌星大赛 程序截图
  • pycharm pip 安装第三方库出错的终极解决方案

    大家都知道 pip 在安装第三方库的时候是十分方便的 在 Windows 平台上 一条命令就可以将依赖关系都搞定 pip install requests 但还是有几个小问题 1 有时候会提示权限不够 当初没有留下那个权限不足的截图 但是根
  • 2021中国华录杯·算法大赛活动进行中,超多奖励等你来拿

    话不多说 期待你的参与
  • oracle redo 移动位置,Oracle数据文件移动方法 - 转

    6 2 参考资料 Oracle数据库移动方法 这里所指 数据库移动 是将Oracle数据文件 系统数据文件或用户数据文件 控制文件 重做日志移动至新的存储路径 并修改Oracle相关配置 使之可以重新正常启动 这种应用常见于系统扩容后的Or
  • Gradle学习笔记 Gradle命令行

    执行多个任务 安装好Gradle之后 就可以使用Gradle命令行了 首先我们先新建一个文件夹gradle learn 然后在其中新建一个build gradle 这是Gradle的项目构建文件 task compile doLast pr