学习Gradle以及Groovy

学习了邓大佬的gradle文章,人家也对得起深入理解几个字了,首先讲了groovy这门语言就是Java系的语言,相较于Java最大的不同就是闭包,由于这个特性不习惯写这些东西的还是比较难理解的,邓说可以理解成c/c plus那种函数指针

groovy里面的闭包定义是一个大括号{},而当你使用闭包的时候可以省掉(),因此有些方法看不到他的闭包,例如list的 list.each{ it - > println(it) } 实际上each里面就有一个闭包,这种语法也和kotlin差不多,kt也是这玩意,看起来令人费解

接着又讲到grdle执行的都是很多plugin,这些plugin都是由各种task组成的,编译时期会先构建一个task 或者 plugin之间的依赖有向图,根据图依次往下执行不同的task

他举例她自己写的util gradle,apply是gradle的一个方法,他的实现也是闭包,gradle编译的时候会产生gradle对象和project对象,他们分别有自己的属性等,

gradle是一个编译框架和make类似等,主要构成是task和transform,task就是我们经常执行的一些任务, 例如:gradle clean

transform过程则是在于gradle的编译过程等其中, 主要阶段就是: init - > config - > exec 而你可以在这些过程中增加自己的个性化操作,例如使用asm字节码插桩搞一些自定义的东西,例如打点,统计,log等等,
这些因为都是构建期,所以你可以动态加进去任何你想要的东西,这些主要就是继承transform去实现在before或者after增加东西或者过程等等

gradle有一些语法 <= 这种就意味着 dolast在某一个action的最后执行这玩意,相当于gradle的语法糖?这糖md不好吃啊。在闭包里如果不加这个就会优先执行,相当于dofirst执行的这个action。。

实际上通读下来人家的文章,发现人家的学习方法就是查询官方文档,查询对应api等等,另外也体现了人家基本功的扎实,学习这些其实都是一同百通的,各种语言看起来眼花缭乱,除了特异性,共通之处其实更多,最主要的是思想,
Java kt groovy dart py c plus 等等,基础好了,分析出来语言的必备要素,其实都差不了太多

猜你喜欢

转载自www.cnblogs.com/pjex/p/11507852.html