我是靠谱客的博主 儒雅抽屉,这篇文章主要介绍Gradle学习笔记 Gradle命令行,现在分享给大家,希望可以做个参考。

执行多个任务

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

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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

结果如下。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ 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。然后查看一下输出,我们会发现输出非常有趣。

复制代码
1
2
3
4
5
6
7
8
9
10
11
$ 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文件内容如下:

复制代码
1
2
3
4
5
task hello { doLast { println "using build file '$buildFile.name' in '$buildFile.parentFile.name'." } }

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

复制代码
1
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添加下面一行:

复制代码
1
description = 'This is some info'

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

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
$ 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列出所有任务。结果如下。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
$ 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任务变成这样。

复制代码
1
2
3
4
5
6
7
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,在这种方式下不会执行任何任务,只会列出这些任务的执行顺序。例如:

复制代码
1
2
3
4
5
6
7
8
9
10
$ 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

最后

以上就是儒雅抽屉最近收集整理的关于Gradle学习笔记 Gradle命令行的全部内容,更多相关Gradle学习笔记内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(84)

评论列表共有 0 条评论

立即
投稿
返回
顶部