Gradle学习(七)——持续构建

原创 2017年12月25日 09:41:35

转载请注明出处:http://blog.csdn.net/lastsweetop/article/details/78889372

通常情况下,你会指定要执行的任务让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插件任务图:
javaPluginTasks

以下是各个任务对于的输入文件:

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任务就会再次执行。

版权声明:本文为博主原创文章,未经博主允许不得转载。

第6章 持续构建

注意:持续构建是一个孵化中的特性。这意味着它还不太完善,未在生产环境中普遍应用。同时此文档在将来可能不再适用。 通常来说,你告诉Gradle去执行某个任务完成某次构建,Gradle会判断出执行当前任务...
  • piaobo2161978
  • piaobo2161978
  • 2017年12月14日 15:02
  • 50

如何使用Rally+Docker测试OpenStack

http://geek.csdn.net/news/detail/67842 一.为什么要用Rally Docker 1.为什么要通过Docker使用Rally 众所周知,软件产...
  • ztguang
  • ztguang
  • 2016年04月18日 10:33
  • 1101

Gradle学习(七)——持续构建

会指定要执行的任务让Gradle来执行。Gradle会分析你给出的任务需要执行的所有任务集合,按照顺序全部执行他们,然后停下来等你的下一次指令。持续集成则不同,它会按照你给出的任务指令,不断的分析构建...
  • lastsweetop
  • lastsweetop
  • 2017年12月25日 09:41
  • 420

gradle学习(21)-在eclipse中构建java项目

1.下载gradle for eclipse插件 根据前人文章找到的链接下载的,就不多说了。下载完成后,重启eclipse。 2.创建gradle项目 创建新项目的时候会发现多了一个gr...
  • qhshiniba
  • qhshiniba
  • 2015年01月14日 20:13
  • 6099

怎样持续不断的学习~~

持续不断的学习~~
  • qq_19318067
  • qq_19318067
  • 2017年03月22日 11:02
  • 214

listview多条目 GridView+listview 侧滑 ,TabLayout .PullToRefreshListView PullToRefreshScrollV

//效果图如下 //首先把所需要的依赖包导入  gson jar包、imageLoader jar包、design jar包,,,然后导入library,新建项目,把library导入项目中...
  • xxb52306
  • xxb52306
  • 2017年10月26日 08:54
  • 222

Android6.0 MTK 需求文档(五)

一:图库中的照片全屏显示 (packages/apps/Gallery2/) diff --git a/src/com/android/gallery3d/app/PhotoPage.java b/s...
  • qq_30796789
  • qq_30796789
  • 2016年12月14日 11:22
  • 5395

Gradle(构建一个android项目)

Google I/O 2013发布了新的开发工具Android Studio和新的构建系统Gradle, Android Studio自不必说,这是Android IDE的未来。这篇文章就来学习下Gr...
  • dxyoo7
  • dxyoo7
  • 2014年05月08日 14:55
  • 3946

(一)如何使用gradle构建Android项目

今天又是个放假的日子,放假对于很多人来说,可以到处去玩,可是对于那些单身程序猿来说,很难找到一个理由去哪里玩,...
  • u013970487
  • u013970487
  • 2014年03月22日 22:16
  • 2952

打造最漂亮的串口调试助手(基于WPF + .NET C# VS2013)附源码!

WPF界面全部用XAML语言手打,只会用Grid布局
  • q45213212
  • q45213212
  • 2014年06月27日 15:14
  • 38684
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Gradle学习(七)——持续构建
举报原因:
原因补充:

(最多只允许输入30个字)