美文网首页
aop进阶-gradle插件

aop进阶-gradle插件

作者: Sparky | 来源:发表于2018-09-05 11:40 被阅读23次
    1. variants分两种分别是libraryVariants和applicationVariants
      final def variants = project.android.libraryVariants
      final def variants = project.android.applicationVariants

    2. 如果aop的代码在另外一个module中,那么你的app module也需要添加aspectj的相关依赖,并且aop module的依赖和app module的依赖只有variants不同。

    3. 我们要像引用第三方插件那样引用这个包,如果要添加这么多配置的话会很麻烦,所以我们可以开发一个gradle插件,引用插件来配置这些依赖。

    创建groovy项目:(如果是idea的话直接创建groovy项目即可)

    1. 创建module,类型为Android library

    2. 修改module下的java目录为groovy目录

    3. 删除res目录下的所有子文件和目录,并修改res目录名为resources

    4. 在resources下创建META-INF/gradle-plugins/$(plugin-name).properties。例如我们要创建的插件名为com.sparky.plugin,那么在app module下引用就是 apply plugin: 'com.sparky.plugin',这里需要定义的文件名就是com.sparky.plugin.properties

    5. 在xx.properties文件下注册plugin文件,对应groovy包下的全包路径类名。例如定义plugin的类为com.dou.plugin.TestPlugin.groovy,则这里要添加implementation-class=com.dou.plugin.TestPlugin

    6. 创建plugin文件并编辑,要实现Plugin<Project>接口,这些依赖包需要导入

       compile gradleApi()
       compile localGroovy()
       implementation 'com.android.tools.build:gradle:3.1.2'
       //aspectj需要到的类
       implementation 'org.aspectj:aspectjtools:1.8.5'
      

      注意: 如果出错一定要仔细看log,例如我plugin文件用到AppPlugin和LibraryPlugin,没有自动导包,上传到maven仓库的时候不会报错,apply plugin之后编译的时候会报错,有日志

    7. 定义maven仓库的task

       apply plugin: "maven"
       group = 'com.dou.aopplugin'
       version = '1.0.0'
      
       uploadArchives{
           repositories{
               mavenDeployer{
                   repository(url:uri("../repo"))
               }
           }
       }
      
    8. 项目中引用,注意添加 mavenLocal

       project build.gradle下:
       buildscript{
           repositories{
               ...
               mavenLocal() // 本地maven需要这行,非本地要删除
               maven{
                   url "/home/dou/work/workspace/demos/aopdemo/repo"
               }
           }
       }
       
       dependencies{
           ...
           classpath 'com.dou.aopplugin:aopplugin:1.0.0'
       }

    相关文章

      网友评论

          本文标题:aop进阶-gradle插件

          本文链接:https://www.haomeiwen.com/subject/wpqawftx.html