内容简介:Gradle学习(七)——持续构建
通常情况下,你会指定要执行的任务让Gradle来执行。Gradle会分析你给出的任务需要执行的所有任务集合,按照顺序全部执行他们,然后停下来等你的下一次指令。持续集成则不同,它会按照你给出的任务指令,不断的分析构建结果是否过期,如果过期则会再次执行构建,除非你强制让它停下来。比如你的任务是把 java 的源文件编译为class文件,那么当java源文件改变时,构建就会自动再次执行。
开始和停止
当你的gradle任务增加了–continuous或者-t时,持续构建便开始了,它会首先执行一次构建任务,例如 gradle build -x test -t
的输出如下:
Continuous build is an incubating feature. BUILD SUCCESSFUL in 0s 4 actionable tasks: 4 up-to-date Waiting for changes to input files of tasks... (ctrl-d to exit) <-------------> 0% WAITING > IDLE
注意到构建结束之后也没有退出指令,它在等待输入文件的改变,一旦发生改变它就会再次执行构建任务,试着改变一个groovy文件,然后看到如下输出:
Continuous build is an incubating feature. BUILD SUCCESSFUL in 0s 4 actionable tasks: 4 up-to-date Waiting for changes to input files of tasks... (ctrl-d to exit) modified: /Users/apple/Documents/mydream/groovy/studygroovy/src/main/groovy/app/TimeWindow.groovy Change detected, executing build... BUILD SUCCESSFUL in 7s 4 actionable tasks: 2 executed, 2 up-to-date Waiting for changes to input files of tasks... (ctrl-d to exit) <-------------> 0% WAITING > IDLE
可以看到检测到了文件的改变,并再次执行了构建。退出方式也给出了目前只能简单的Ctrl-D。
再次构建的触发
要注意的是,仅仅任务的输入文件改变时,构建才会再次执行。其他的,不管是构建脚本,构建逻辑,包括构建的配置阶段的文件发生改变都不会引起再次构建,这类的构建必须再次手动执行才会生效。
以gradle的java插件为例子来说明一下再次构建触发的条件,以下是java插件任务图:
以下是各个任务对于的输入文件:
compileJava src/main/java processResources src/main/resources compileTestJava src/test/java processTestResources src/test/resources
假设第一次构建已经成功,这时候改变 src/main/java
里的文件,将会再次发生构建,增量构建将会保证只会执行与修改相关的构建任务。
如果 compileJava
任务失败,及时 src/test/java
下的文件发生了改变,构建也不会再次触发,因为测试任务是基于编译任务的,只有当源代码修改,编译任务构建再次执行,编译任务正常通过了,测试任务的构建才会再次执行。
构建的输入文件不仅仅是源代码,还有可能是其他文件,比如 processResources
的输入文件是 src/main/resources
下的资源文件,资源文件一旦发生改变 processResources
任务就会再次执行。
以上所述就是小编给大家介绍的《Gradle学习(七)——持续构建》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 构建机器学习算法
- 学习 Kylin(三):Cube 构建
- 基于ZStack构建深度学习云平台
- 机器学习入门系列(2)--如何构建一个完整的机器学习项目(一)
- 使用Kubeflow构建机器学习流水线
- 如何构建一个器学习项目来找到工作?
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
高效程序员的45个习惯
Venkat Subramaniam、Andy Hunt / 钱安川、郑柯 / 人民邮电出版社 / 2010-01 / 35.00元
“书中‘切身感受’的内容非常有价值——通过它我们可以做到学有所思,思有所悟,悟有所行。” ——Nathaniel T. Schutta,《Ajax基础教程》作者 “此书通过常理和经验,阐述了为什么你应该在项目中使用敏捷方法。最难得的是,这些行之有效的实战经验,竟然从一本书中得到了。” ——Matthew Johnson,软件工程师 十年来,软件行业发生了翻天覆地的变化。敏捷......一起来看看 《高效程序员的45个习惯》 这本书的介绍吧!