【白水日记】Gradle(三)

147 阅读1分钟
上一篇我们分析了gradle插件的简单使用,这次我们看看如何自定义gradle工程的扩展配置

新建一个目录,将之前的文件都拷贝进去

新建一个扩展类

在Root文件中配置path参数

设置path属性    

此时属性已经生效,如果需要发布插件到本地 创建一个插件文件夹

还需要编写发布任务

引用maven插件

编写uploadArchives任务

配置地址,groupId,artifactId,version

执行uploadArchives,本地会生成一个repo目录,根据上一步的groupId,依次生成对应文件夹

最后生成的jar包,可以供其他项目使用

使用方法:

配置本地maven仓库

引用插件

使用插件,配置参数

编译结果

关于gradle的插件,应用较多的就是动态生成代码,通过编写注解标记,在编译期间生成代码,也即通过脚本完成批处理处理

编写注解有时需要给注解加上注解,注解的注解就被成为元注解

编写一个注解:

@Target({ElementType.TYPE}) @Retention(RetentionPolicy.CLASS) public @interface Destination { String url(); ​ String description() 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) //包