为什么80%的码农都做不了架构师?>>>

列出项目中所有可用的task

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

$ gradle -q tasks

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

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

$ gradle -q tasks --all

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

任务执行

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

$ gradle yayGradle0 groupTherapy

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

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

任务名字缩写

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

$ gradle gT
$ gradle yG0

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

在执行时排除一个任务

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

$ gradle groupTherapy -x yayGradle0

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

命令行选项

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

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

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

$ gradle -h

举几个重要的例子:

  • -?,-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

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

$ ps aux | grep gradle

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

$ gradle groupTherapy --no-daemon

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

$ gradle --stop

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

Gradle之使用Gradle的命令行相关推荐

  1. Android Stadio配置了gralde的本地路径,但是windos 命令行还是会下载gradle

    如下图: 已经在stadio 里面设置了gradle 的路径,但是在cmd 命令行里面不会去用这个路径. 解决方案:需要在环境变量里面设置一个gradle home GRADLE_USER_HOME ...

  2. android+命令行编译,打包生成apk文件,Android 使用Android Studio + Gradle 或 命令行 进行apk签名打包...

    默认为debug mode,使用的签名文件在: $HOME/.android/debug.keystore 比如 C:\Users\chengcj1.android\debug.keystore 1. ...

  3. 【转载】Gradle学习 第十一章:使用Gradle命令行

    转载地址:http://ask.android-studio.org/?/article/94 This chapter introduces the basics of the Gradle com ...

  4. gradle 命令行_Gradle命令行便利

    gradle 命令行 在我的<用Gradle构建Java的gradle tasks >一文中,我简要提到了使用Gradle的" gradle tasks "命令来查看特 ...

  5. Gradle命令行便利

    在我的<用Gradle构建Java的gradle tasks >一文中,我简要地提到了使用Gradle的" gradle tasks "命令来查看特定Gradle构建的 ...

  6. 用Gradle命令行编译Android工程

    在Android sdk 目录下的samples/android-21/ 文件夹下,任找一个工程,如果在命令行直接编译 可能会报这种错误: gradle buile.gradle FAILURE: B ...

  7. java程序包r不存在_java - 从命令行使用Gradle构建时,“程序包R不存在”错误 - 堆栈内存溢出...

    我正在尝试从命令行使用Gradle构建一个Android项目,但是当我想要更改目录结构时发现了一个问题. 目前是这样的: . └── main ├── AndroidManifest.xml ├── ...

  8. android studio命令行差错,Android Studio构建正常,Gradle命令行失败

    我已经将一个应用程序从Eclipse移植到Android Studio,实现了我所需的功能,并允许它在Android Studio中工作.由于口味的数量,我宁愿使用命令行Gradle来构建它.但是,当 ...

  9. Android Gradle 技巧之二: 最爱命令行

    命令行 很多做 Android 开发不久的同学,习惯于使用图形界面,对命令行操作很陌生甚至恐惧.遇到 AS 运行错误,束手无策. AS 为了确保易用性,也在 UI 界面上屏蔽了很多命令行运行的细节,导 ...

最新文章

  1. java中countinue,.random(用于产生一个随机数)入门可看
  2. matlab mapminmax 基于神经网络的网格训练
  3. NodeJS学习笔记(四) events,util模块
  4. 图论--2-SAT--poj 3678-Katu Puzzle(模板题)
  5. 如何处理好与孩子沟通的关系?
  6. Windows Server 2008 启用公共文件夹共享
  7. 项目成本管理---控制成本
  8. Unity创建注册表并写入
  9. 使用medusa进行ssh爆破
  10. SSL证书错误怎么办?浏览器常见SSL证书报错解决办法
  11. 使用思博伦卫星导航模拟器GSS7000方法
  12. python源代码的后缀名是什么_Python
  13. 今天接触个新概念——竞争情报
  14. C++新生入学管理系统
  15. stata 入门(双重差分模型)
  16. 【计算机视觉 | ViT-G】谷歌大脑提出 ViT-G:缩放视觉 Transformer,高达 90.45% 准确率
  17. easyui框架实现datagrid多表头设置
  18. 智能照明的新进展和解决方案
  19. 纳兰容若 ----- 木兰花令 拟古决绝词
  20. esp12s 第十一章 WS2812灯带

热门文章

  1. 插入递归引用Identity列的记录
  2. ES6新特性_ES6的数值扩展---JavaScript_ECMAScript_ES6-ES11新特性工作笔记039
  3. ES6新特性_let使用案例---JavaScript_ECMAScript_ES6-ES11新特性工作笔记004
  4. Spring Security OAuth2.0_实现分布式认证授权_扩展用户信息_Spring Security OAuth2.0认证授权---springcloud工作笔记156
  5. java 大数操作(加减乘除及取余)
  6. fastadmin添加定时任务
  7. vector, list, deque的使用区别
  8. java web应用开发渐进教程_Java Web应用开发渐进教程
  9. ssh mysql 命令_ssh mysql命令大全
  10. teablue数据分析_基于大数据分析的茶叶质量评估