Gradle之使用Gradle的命令行

列出项目中所有可用的task

在上一blog中展示了如何通过gradle命令运行一个指定的task。要运行一个task,需要知道它的具体名字。如何可以在不用看源代码的情况下知道所有可用的task,是不是很棒?Gradle提供了一个叫作tasks的帮助任务来帮助你查看构建脚本和显示每个可以使用的task,包括描述该task作用的信息。以quiet模式运行gradle tasks的输入结果如下:

$ gradle -q tasks

165940_iQn1_168814.png

关于输出,有几点需要说明。Gradle提供了任务组的概念,你可以把它看作是多个task的集群。每个构建脚本都会默认暴露Help tasks任务组如果某个task不属于一个任务组,那么它就会显示在Other tasks中。在这里可以找到groupTherapy任务。以后我们会学习如何把task添加到一个任务组中。

你可以会想,在构建脚本中定义的其他task去哪了?在输出的底部,你会看到一条提示,要获得关于task的更多信息,请使用--all选项

$ gradle -q tasks --all

171447_oYWf_168814.png

--all选项是查看task执行顺序的好办法,为了有更好的可读性,依赖任务以缩进方式有序地显示在根task的下面。

任务执行

在之前的例子中,通过给命令gradle添加一个参数来执行指定的任务。Gradle的命令行实现会确保任务以及它们的所有依赖都被执行。你也可以在命令行中通过参数定义,一次执行多个任务。如例:

$ gradle yayGradle0 groupTherapy

任务通常只会执行一次,无论它们是在命令行中指定的还是作为另一个任务的依赖。

172645_yCXj_168814.png

毫无意外,和运行gradle groupTherapy时的输出一样。正确的顺序被保存并且每个任务只执行一次

任务名字缩写

Gradle最有用的特性之一就是能够以驼峰式的缩写在命令行上运行任务。如果你想要以缩写方式运行之前的例子,则只需要输入如下示例:

$ gradle gT
$ gradle yG0

当你要运行名字特别长的任务或者多个任务参数时,这个特性非常有用。注意:任务名字的缩写必须是唯一的,Gradle才能找到相应的任务。

在执行时排除一个任务

有时候你想要在构建运行时排除一个指定任务。Gradle提供了一个命令行选项 -x 来实现。假设你想要排除任务yayGradle0:

$ gradle groupTherapy -x yayGradle0

174309_fCgD_168814.png

Gradle排除了任务yayGradle0和它的依赖任务startSession,这个概念叫做智能排除

命令行选项

我们来探索最重要的通用命令行选项,控制构建脚本日志级别的标志位,以及给项目提供参数的方法。Gradle命令允许你同时定义一个或者多个选项。假设你想要将日志级别改变到INFO,则可以使用 -i 选项,或者如果想要打印出在执行期间发生错误时的堆栈踪迹信息,则可以使用 -s 选项。例如:

$ gradle groupTherapy -is
#或者
$ gradle groupTherapy -i-s

111829_Aw9y_168814.png

正如你所看到的,可以轻松地组合多个命令行选项。通过 -h 选项,你可以看到所有可用的选项:

$ gradle -h

112231_8g5C_168814.png

举几个重要的例子:

  • -?,-h,--help:打印出所有可用的命令行选项,包含描述信息。

  • -b,--build-file:Gradle构建脚本的默认命名约定是build.gradle。使用这个命令行选项可以执行一个特定名字的构建脚本(比如,gradle -b test.gradle)。

  • --offline:通常,构建中声明的依赖必须在离线仓库中存在才可用。如果这些依赖在本地缓存中没有,那么运行在一个没有网络连接环境中的构建都会失败。使用这个选项可以让你以离线模式运行构建仅仅在本地缓存中检查依赖是否存在

参数选项

  • -D,--system-prop:Gradle是以一个JVM进程运行的。和所有的Java进程一样,你可以提供一个系统参数,就像-Dmyprop=myvalue这样。

  • -P,--project-prop项目参数构建脚本可用的变量。你可以使用这个选项直接向构建脚本中传入参数(比如:-Pmyprop=myvalue)。

日志选项

  • -i,--info:在默认设置中,Gradle构建不会提供大量的输出信息。通过这个选项可以将Gradle的日志级别改变到INFO以获得更多信息。如果你想要知道构建中发生了什么,这个选项非常有用。

  • -s,--stacktrace:如果构建在运行中出现错误,你会想要知道错误是从哪里开始的。-s选项在有异常抛出时会打印出简短的堆栈跟踪信息,帮助你进行调度。

  • -q,--quiet:减少构建出错时打印出来的错误日志信息。

帮助任务

  • tasks:显示项目中所有可运行的task,包括它们的描述信息。项目中应用的插件可能会提供一些额外的task。

  • properties:显示出项目中所有可用的属性。某些属性是由Gradle的project对象提供的,project对象是一个构建的本质表现形式。其他的属性都是用户定义的,要么来自于属性文件或者命令行选项,要么是直接在构建构建脚本中定义的。

Gradle守护进程

当Gradle成为日常工作的一部分时,你会发现需要重复地运行构建。如果你在一个web应用上工作,就更是如此。不管哪种方式,你都会发现效率很重要。每次初始化一个构建时,JVM都要启动一次,Gradle的依赖要载入到类加载器中,还要建立项目对象模型。这个过程需要花上好几秒。Gradle守护进程是这个问题的救星。

守护进程以后台进程方式运行Gradle。一旦启动,gradle命令就会在后续的构建中重用之前创建的守护进程,以避免启动时造成的开销。在我的机器上,成功地完成运行groupTherapy任务要花上3秒钟。我们希望提高启动和执行的效率。在命令行中启动Gradle守护进程很简单,在运行gradle命令时加上 --daemon 选项。示例:

$ gradle groupTherapy --daemon

164603_sqmZ_168814.png

为了验证守护进程在运行,你可以查看系统进程列表:

$ ps aux | grep gradle

后续触发的gradle命令都会重用守护进程。记住,守护进程只会被创建一次,即便你在命令行中加了 --daemon 选项。守护进程会在3小时空间时间之后自动过期。任何时候你都可以选择在执行构建时不使用守护进程,只需要添加命令行选项 --no-daemon 即可:

$ gradle groupTherapy --no-daemon

手动停止守护进程,可以执行:

$ gradle --stop


转载于:https://my.oschina.net/fhd/blog/518609

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值