博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第一个 Gradle 脚本及简单命令
阅读量:6002 次
发布时间:2019-06-20

本文共 7836 字,大约阅读时间需要 26 分钟。

hot3.png

第一个 Gradle 脚本及简单命令

task helloworld {    doLast {        print 'Hello world!'    }}/* <
<这种方式将在 gradle5.0 中删除,不建议使用 * task helloworldsort << { print 'hello world!'}task startsession println 'startsession' chant()}def chant() *使用 gradle -q task名称 的方式运行会没有效果 使用 的方式运行才有效果* ant.echo(message: 'ant 任务的引用') 'chant'}3.times "yaygradle$it" '动态任务的定义' + it }} dependson 说明 之间的依赖关系,gradle 会确保被依赖的 总会在定义该依赖的 之前执行 yaygradle0.dependson startsessionyaygradle2.dependson yaygradle1, yaygradle0 任务执行的顺序 ->
yayGradle0 -> yayGradle1 -> yayGradle2 -> groupTherapy */task groupTherapy(dependsOn: yayGradle2) << { println 'groupTherapy'}

gradle -q task名称 使Gradle只显示对应 task 相关信息

task 代表一个任务 doLast 代表 task 最后执行的一个 action doLast 可以使用 <<更简单的来表达

gradle task --all 查询所有的可以知晓的任务

www.coderknock.com$ gradle task --allThe Task.leftShift(Closure) method has been deprecated and is scheduled to be removed in Gradle 5.0. Please use Task.doLast(Action) instead.        at build_88ntbwtq2gz525a8g5uy5gmc2.run(D:\Windows\Desktop\LearnGradle\HelloWorld\build.gradle:7):tasks------------------------------------------------------------All tasks runnable from root project------------------------------------------------------------

构建的 setip 任务,帮助初始化 Gradle 的构建(比如生成 build.gradle 文件)

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 'HelloWorld'.components - Displays the components produced by root project 'HelloWorld'. [incubating]dependencies - Displays all dependencies declared in root project 'HelloWorld'.dependencyInsight - Displays the insight into a specific dependency in root project 'HelloWorld'.dependentComponents - Displays the dependent components of components in root project 'HelloWorld'. [incubating]help - Displays a help message.model - Displays the configuration model of root project 'HelloWorld'. [incubating]projects - Displays the sub-projects of root project 'HelloWorld'.properties - Displays the properties of root project 'HelloWorld'.tasks - Displays the tasks runnable from root project 'HelloWorld'.

没有分类的任务【目前列出的是我们刚刚声明的任务,自己生命的任务也可以设置任务组】,后期会学习如何添加描述信息

Other tasks-----------groupTherapyhelloworldhelloworldSortstartSessionyayGradle0yayGradle1yayGradle2BUILD SUCCESSFULTotal time: 1.29 secs

每个构建脚本都会默认暴露 Help tasks 任务组,如果某个 task 不属于一个任务组,就会显示在 Other tasks 中。

任务执行

www.coderknock.com$ gradle yayGradle0 groupTherapy:startSessionstartSession[ant:echo] Ant 任务的引用chant:yayGradle0动态任务的定义task ':yayGradle0':yayGradle1动态任务的定义task ':yayGradle1':yayGradle2动态任务的定义task ':yayGradle2':groupTherapygroupTherapyBUILD SUCCESSFULTotal time: 1.61 secs
www.coderknock.com$ gradle groupTherapy:startSessionstartSession[ant:echo] Ant 任务的引用chant:yayGradle0动态任务的定义task ':yayGradle0':yayGradle1动态任务的定义task ':yayGradle1':yayGradle2动态任务的定义task ':yayGradle2':groupTherapygroupTherapyBUILD SUCCESSFULTotal time: 1.614 secs

我们可以看到 gradle yayGradle0 groupTherapygradle groupTherapy两者的运行结果是相同的,这是因为 groupTherapyyayGradle0直接有依赖关系,这样可以保证被依赖的任务只执行一次,并且任务间的执行顺序按照依赖关系进行。

www.coderknock.com$ gradle gT:startSessionstartSession[ant:echo] Ant 任务的引用chant:yayGradle0动态任务的定义task ':yayGradle0':yayGradle1动态任务的定义task ':yayGradle1':yayGradle2动态任务的定义task ':yayGradle2':groupTherapygroupTherapyBUILD SUCCESSFULTotal time: 1.43 secs

Gradle 提供了以驼峰式缩写在命令行上运行命令的方式,我们可以通过如上面一样的gradle gT这样的命令来达到gradle groupTherapy这样的效果。其中要确保任务名字的缩写是唯一的不然会有如下报错效果:

www.coderknock.com$ gradle yGFAILURE: Build failed with an exception.* What went wrong:Task 'yG' is ambiguous in root project 'HelloWorld'. Candidates are: 'yayGradle0', 'yayGradle1', 'yayGradle2'.* Try:Run gradle tasks to get a list of available tasks. Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.BUILD FAILEDTotal time: 1.296 secs

我们应该使用yG0来代替yayGradle0

www.coderknock.com$ gradle groupTherapy -x yG0:yayGradle1动态任务的定义task ':yayGradle1':yayGradle2动态任务的定义task ':yayGradle2':groupTherapygroupTherapyBUILD SUCCESSFULTotal time: 1.378 secs

使用-x参数,我们可以智能排除任务中对应的依赖任务及其相关依赖

使用gradle -h我们可以查询gradle可用参数

www.coderknock.com$ gradle -hUSAGE: gradle [option...] [task...]-?, -h, --help          显示此帮助消息。Shows this help message.-a, --no-rebuild        不重新生成项目依赖项。Do not rebuild project dependencies.-b, --build-file        指定生成文件。Specifies the build file.-c, --settings-file     指定的设置文件。Specifies the settings file.--configure-on-demand   只有相关的项目中运行此生成配置。这意味着更快的生成,实现大型多项目生成。[孵化中]Only relevant projects are configured in this build run. This means faster build for large multi-project builds. [incubating]--console               指定哪种类型的控制台输出生成。值是 '普通'、 '自动' (默认值) 或 '详细'。Specifies which type of console output to generate. Values are 'plain', 'auto' (default) or 'rich'.--continue              当一个任务执行失败后继续执行任务。Continues task execution after a task failure.-D, --system-prop       设置系统属性的 JVM (例如 Dmyprop = myvalue)。Set system property of the JVM (e.g. -Dmyprop=myvalue).-d, --debug             在调试模式下打印日志(包括异常堆栈)。 Log in debug mode (includes normal stacktrace).--daemon                使用 Gradle 守护进程来进行构建,如果没有运行的守护进程则启动一个。Uses the Gradle Daemon to run the build. Starts the Daemon if not running.--foreground            在前台启动 Gradle 守护进程。[孵化中]Starts the Gradle Daemon in the foreground. [incubating]-g, --gradle-user-home  指定 gradle 用户的主目录。Specifies the gradle user home directory.--gui                   启动 Gradle GUI。Launches the Gradle GUI.-I, --init-script       指定初始化脚本。Specifies an initialization script.-i, --info              将日志级别设置为info。Set log level to info.--include-build         Includes the specified build in the composite. [incubating]-m, --dry-run           禁用所有任务的操作来进行构建。Runs the builds with all task actions disabled.--max-workers           配置 Gradle 允许使用的并发的数目。[孵化]Configure the number of concurrent workers Gradle is allowed to use. [incubating]--no-daemon             不适用守护进程构建。Do not use the Gradle Daemon to run the build.--no-scan               Disables the creation of a build scan. [incubating]--offline               构建而不访问网络资源(使用本地缓存)。The build should operate without accessing network resources.-P, --project-prop      设置项目属性的生成脚本 (例如 Pmyprop = myvalue)。Set project property for the build script (e.g. -Pmyprop=myvalue).-p, --project-dir       Gradle 指定的起始目录。默认为当前目录。Specifies the start directory for Gradle. Defaults to current directory.--parallel              并行构建项目。Gradle将尝试测定最佳线程数。Build projects in parallel. Gradle will attempt to determine the optimal number of executor threads to use. [incubating]--profile               配置构建生成时间,并且在
/reports/profile 生成对应的报告。Profiles build execution time and generates a report in the
/reports/profile directory.--project-cache-dir 指定特定于项目的缓存目录。默认值为.gradle 的项目根目录中。Specifies the project-specific cache directory. Defaults to .gradle in the root project directory.-q, --quiet Log errors only.--recompile-scripts 重新编译构建脚本。Force build script recompiling.--refresh-dependencies 刷新依赖关系的状态。Refresh the state of dependencies.--rerun-tasks 忽略以前缓存的任务。Ignore previously cached task results.-S, --full-stacktrace 打印出所有异常堆栈信息(非常详细)。Print out the full (very verbose) stacktrace for all exceptions.-s, --stacktrace 打印出所有异常堆栈信息。Print out the stacktrace for all exceptions.--scan 创建一个构建扫描。如果尚未应用构建扫描插件,Gradle 将失败的生成。[孵化中]Creates a build scan. Gradle will fail the build if the build scan plugin has not been applied. [incubating]--status 显示运行的和最近停止的守护进程的状态信息。 Gradle Daemon(s)。Shows status of running and recently stopped Gradle Daemon(s).--stop 如果有守护进程在运行则停止守护进程。Stops the Gradle Daemon if it is running.-t, --continuous 允许连续构建。Gradle在构建完成后不退出,并在任务文件变化时重新构建。Enables continuous build. Gradle does not exit and will re-execute tasks when task file inputs change. [incubating]-u, --no-search-upward 不在父文件夹中搜索 settings.gradle。Don't search in parent folders for a settings.gradle file.-v, --version 打印版本信息。Print version info.-x, --exclude-task 指定要排除执行的任务。Specify a task to be excluded from execution.

转载于:https://my.oschina.net/coderknock/blog/850637

你可能感兴趣的文章
BigTable——针对结构型数据的一种分布式存储系统
查看>>
ip通信基础第二周回顾
查看>>
唯美MACD-完全版
查看>>
Canvas中 drawImage绘制图片不显示
查看>>
MyEclipse新建Server项目
查看>>
字符串问题分析方法
查看>>
Magento错误处理
查看>>
茵茵的第一课
查看>>
Linux实战教学笔记53:开源虚拟化KVM(一)搭建部署与概述
查看>>
PAT 1007
查看>>
USACO习题:Friday the Thirteenth
查看>>
C++ VS2012 内存泄露检测
查看>>
zabbix 批量添加聚合图形
查看>>
北京交通大学第六届新生程序设计竞赛题解
查看>>
求解点关于直线的距离、垂足、对称点公式
查看>>
洛谷 P1577 切绳子【二分答案】
查看>>
用 Google Map 的 Geocoder 接口来反向地址解析
查看>>
在中小型公司如何做好测试——论测试计划的重要性
查看>>
BSS段、数据段、代码段、堆与栈
查看>>
python调用c/c++写的dll
查看>>