上一篇我们分析了gradle插件的简单使用,这次我们看看如何自定义gradle工程的扩展配置
新建一个目录,将之前的文件都拷贝进去
新建一个扩展类
在Root文件中配置path参数
设置path属性
此时属性已经生效,如果需要发布插件到本地
创建一个插件文件夹
还需要编写发布任务
引用maven插件
编写uploadArchives任务
配置地址,groupId,artifactId,version
执行uploadArchives,本地会生成一个repo目录,根据上一步的groupId,依次生成对应文件夹
最后生成的jar包,可以供其他项目使用
使用方法:
配置本地maven仓库
引用插件
使用插件,配置参数
编译结果
关于gradle的插件,应用较多的就是动态生成代码,通过编写注解标记,在编译期间生成代码,也即通过脚本完成批处理处理
编写注解有时需要给注解加上注解,注解的注解就被成为元注解
编写一个注解:
@Target({ElementType.TYPE})@Retention(RetentionPolicy.CLASS)public@interfaceDestination{Stringurl();Stringdescription()default"";}
@Retention:表示注解存在的位置
@Retention(RetentionPolicy.SOURCE) //仅存在于源码中,在class字节码文件中不包含
@Retention(RetentionPolicy.CLASS) // 默认行为,注解会在class字节码文件中存在
@Retention(RetentionPolicy.RUNTIME) // 注解会在class字节码文件中存在,在运行时可以通过反射获取到
相应的target:
@Target:注解的作用目标
@Target(ElementType.TYPE) //接口、类、枚举、注解
@Target(ElementType.FIELD) //字段、枚举的常量
@Target(ElementType.METHOD) //方法
@Target(ElementType.PARAMETER) //方法参数
@Target(ElementType.CONSTRUCTOR) //构造函数
@Target(ElementType.LOCAL_VARIABLE)//局部变量
@Target(ElementType.ANNOTATION_TYPE)//注解
@Target(ElementType.PACKAGE) //包
网友评论