Groovy&Gradle
文章平均质量分 73
Gradle是一个构建管理软件,由于其基于Groovy所以本栏也包含语言的教学
不会写代码的丝丽
这个作者很懒,什么都没留下…
展开
-
AGP tramsform
Transform原创 2021-03-14 19:17:34 · 424 阅读 · 0 评论 -
Gradle插件 protobuf自动编译
前言protobuf是Google推出的序列化协议,比json所占的字节更小,序列化更快等特点。protobuf Github地址protobuf 语法教程Tip:移动端可以考虑用lite版本减少生成的类体积原创 2020-12-06 20:33:54 · 1504 阅读 · 0 评论 -
Gradle生命周期
Gradle执行构建需要经过三个阶段:初始化阶段配置阶段执行阶段本文将就三个阶段,所触发的回调做讲解。初始化阶段解释执行settings.gradle脚本确定子参与构建的子工程。然后每个确定的子工程会创建一个Project对象。开发者可在 settings.gradle中使用include("xxx")语法添加子工程。如下settings.gradle文件所述:rootProject.name = 'JavaExample'//包含子工程 属于 初始化阶段include 'Chil原创 2020-06-30 01:04:32 · 440 阅读 · 0 评论 -
Gradle 依赖关系和冲突
前言在java编程过程中不免使用大量的第三方库文件,当存多个库文件存在同包同类名的情况时,将发生不可预计的错误,所以依赖冲突是必须解决的一个常规性问题。什么是依赖传递简单来说就是就是A工程依赖B,B依赖C和D。那么A工程将得到B,C和D工程的类。Gradle对于传递依赖 可以把传递依赖变为编译时依赖,也可以默认打包进宿主工程中。-gradle 关闭全部传递依赖//A 工程依赖声明dependencies { //依赖B工程(B工程同时依赖C,D)。 // 但是把传递依赖原创 2020-06-08 23:47:02 · 845 阅读 · 0 评论 -
Groovy 构建生成器
我们在使用Groovy感觉到解析xml于json 时特别方便,其实这一切背后都依赖于groovy的MOP的实现,但是我们要整个利用这个特性或许太复杂,所以groovy提供了一些帮助类帮我们简化操作。BuilderSupport首先我们看下这个类的一些方法回调class MyBuild extends BuilderSupport { /** * 当一个闭包内部添加一个新的子节点 * @param parent * @param child */原创 2020-05-26 22:55:14 · 611 阅读 · 0 评论 -
Groovy Xml解析
生成XML:MarkupBuilder方式:import groovy.xml.MarkupBuilderimport groovy.xml.StreamingMarkupBuilderdef stream = new ByteArrayOutputStream(200)def osw = new OutputStreamWriter(stream)def builder = new MarkupBuilder(osw)builder.asd { book {原创 2020-05-25 21:42:43 · 1435 阅读 · 0 评论 -
Groovy Json解析
如何生成Json字符串JsonBuilder利用元编程的特性帮助我们快速生成一个json字符串import groovy.json.JsonBuilderdef json = new JsonBuilder()json.book { info { name = "Java入门到放弃" author = "XiaoMing" } version { mainVersion "1.0" }}//漂亮的格式化输出js原创 2020-05-24 23:23:33 · 1534 阅读 · 0 评论 -
Groovy MOP3-metaclass
本章将简单讲解metaclass。What MetaClassMetaClass是Goorvy实现语言动态核心类,用于路由方法/属性调用,扩展等.Where MetaClass对于Groovy对象内部存在一个metaclass属性,对于Java对象的metaclass对象存在groovy.lang.MetaClassRegistry中。举个例子:def registry = GroovySystem.getMetaClassRegistry()println registry.getMetaC原创 2020-05-21 22:46:19 · 319 阅读 · 0 评论 -
Groovy MOP-2
对于Groovy创建的类MOP方法或者属性存在以下调用协议:再看了上面的对类的扩展方法后我们来看看MOP方法调用协议部分:协议一 :对于一个Groovy创建的类(后面简写为POGO),如果实现了GroovyInterceptable接口,那么所有的方法调用都必须线调用invokeMethodclass Person implements GroovyInterceptable { @Override Object invokeMethod(String name, Object原创 2020-05-20 22:49:56 · 203 阅读 · 0 评论 -
Groovy MOP-1
静态方法/属性注入:String.metaClass.'static'.sayHello = { println("hello world")}String.'sayHello'()String.sayHello()构造函数注入:String.metaClass.constructor = { Integer p -> new String("hello world" + p)}println new String(1)实例属性/方法注入String.me原创 2020-05-20 00:15:25 · 412 阅读 · 0 评论 -
Groovy读取properties文件
在java配置文件中经常需要读取properties文件,在groovy提供了一些非常方便的方式。我们看下properties长什么样://connfig.propertiesname = "张三"age = 1ConfigSlurper就是一个帮助类,他可以读取标准的properties文件或者groovy脚本形式的配置文件。def config=new ConfigSlurper().parse(new File("/Users/fmy/IdeaProjects/groovy2/src/原创 2020-05-13 22:59:48 · 2641 阅读 · 0 评论 -
Groovy脚本执行
Groovy是一个可以解释执行的语言,在解释执行的情况下具有以下基础语法特征。groovy xxx.groovy方式运行一个groovy文件.在解释执行的Groovy文件中,有如下特点:文件运行在一个Script对象中。def关键字可以省略举个例子://省略def不写name = "XiaoMing123"//闭包不写defmyClosure = { age = 3 println(age)}println(name)myClosure.call()//运行原创 2020-05-13 22:49:09 · 1774 阅读 · 0 评论 -
Groovy 方法扩展
在Groovy允许对一个类的进行添加额外的静态方法或者实例方法。步骤:编写一个静态方法。在META-INF/service/org.codehaus.groovy.runtime.ExtensionModule文件声明扩展函数位置。打成jar 。Demo:我们首先实现对String实例方法进行扩展,判断这个字符和另一个字符串是否包含字符*。扩展函数语法要求:必须有至少一个参数,且第一个参数类型是扩展的类函数必须为静态package org.fmyclass StringExt原创 2020-05-13 20:21:59 · 956 阅读 · 0 评论 -
Groovy的Bean对象
get 和set函数groovy中所有类成员编译后会自动生成get set 函数class Person{ def name def age def high def sex}在编译后会自动生成get和set函数(其他生成函数请无视,这是元编程内容)。public class Person implements GroovyObject { private Object name; private Object age; private原创 2020-05-09 22:55:31 · 515 阅读 · 0 评论 -
Groovy函数调用
函数声明def [返回值类型] 函数名:其中[返回值类型]可以省略,那么返回类型为任意对象def int fun1() { println "fun1" return 1}def fun2() { println "fun2" return 1}函数不需要显示return当一个函数返回时,默认以最后一行的对象作为返回值def fun3() { println "fun3" //函数最后一行作为返回值 1}def f原创 2020-05-09 22:42:16 · 5767 阅读 · 0 评论 -
Groovy 闭包
闭包声明我们看下如何声明一个闭包:def myClosure={ println("I'm Closure")}//调用闭包的方式一myClosure()//调用闭包的方式二myClosure.call()输出:I’m ClosureI’m Closure闭包参数在默认情况下闭包会传递一个null数值,如果没有命名这个参数那么以it命名。def myClos...原创 2020-05-07 12:55:50 · 217 阅读 · 0 评论 -
Groovy集合
本章将简单将继续讲解Groovy集合的语法糖原创 2020-05-05 23:49:27 · 404 阅读 · 0 评论 -
Groovy循环
本文讲解java不存在的几种遍历函数或者方式for 循环IntRange方式IntRange方式的for循环class Main { public static void main(args) { //输出1到3 for (i in 1..3) { println("$i") } }}其实1…3...原创 2020-05-04 18:04:29 · 648 阅读 · 0 评论 -
Groovy 基本语法
本文将简单讲解Groovy语言相关基础知识,如果你学过其他的类Kotlin活swift那么你讲非常轻松了解其语法。关于groovy工程的创建和启动这里并不过多说明,大家可以直接使用idea即可变量定义groovy中变量定义具有自动推断机制,也就是无需声明类型。变量的定义可以采用def关键字。class Main { public static void main(args) { ...原创 2020-05-04 15:32:12 · 596 阅读 · 0 评论