gradle自定义插件与上传本地仓库

来源:互联网 发布:node.js怎么循环输出 编辑:程序博客网 时间:2024/06/05 16:59

gradle自定义插件与上传本地仓库

DEMO地址:https://github.com/zhaopingfu/listener20

1、使用特殊目录buildSrc目录(工程根目录下创建)

buildSrc这个目录是一个特殊的目录,在这个目录里groovy自动帮我们引入了groovy和java api如果工程中存在buildSrc,在执行编译任务的时候,首先执行的是buildSrc的一系列的clean,编译,组装也就是说在编译之前就会之前无论我们有多少模块,在执行任何任务的时候,都会执行buildSrc在buildSrc中编写的,能够作用在所有的子模块中
  • 首先在android项目根目录中创建buildSrc文件夹

  • 创建src/main/groovy/Plugin1.groovy

    import org.gradle.api.Pluginimport org.gradle.api.Projectclass Plugin1 implements Plugin<Project> {    @Override    void apply(Project project) {        println 'plugin1'    }}   
  • 之后在app下的build.gradle中直接引入

    apply plugin: Plugin1

2、直接在build.gradle中编写插件或者在app下直接写插件文件,然后引入

  • 可以直接在app下的build.gradle中写

    class A implements Plugin<Project>{    @Override    void apply(Project target) {    }}
  • 也可以在其他文件中写,比如app目录下新建一个文件:plugin.gradle里面写

    import org.gradle.api.Pluginimport org.gradle.api.Projectclass Plugin2 implements Plugin<Project> {    @Override    void apply(Project project) {        println 'plugin2'    }}
  • 之后在app下的build.gradle中引入:

    apply from:'plugin.gradle'  

3、本地仓库

本地仓库路径:C:\Users\Administrator.m2\repository

可以先在AndroidStudio中创建一个module(java library)

  • 1、首先在build.gradle中引入依赖

    apply plugin: 'java'apply plugin: 'groovy'dependencies {    compile gradleApi()    compile localGroovy()    compile fileTree(dir: 'libs', include: ['*.jar'])}sourceCompatibility = "1.7"targetCompatibility = "1.7"//classpath 'com.pf.plugin:plugin:1.0.0'//group是第一段//version是第三段group 'com.pf.plugin'version '1.0.0'apply plugin: 'maven-publish'publishing {    publications {        plugin(MavenPublication) {            from components.java            //classpath 'com.pf.plugin:plugin:1.0.0'            //下面这个指定的就是第二段的名字,如果不设置,默认就是程序名            //如果不指定,默认就是工程名            artifactId 'plugin'        }    }}
  • 2、在main目录下创建groovy文件夹,在里面创建com.pf.plugin.Plugin3.groovy

    package com.pf.pluginimport org.gradle.api.Pluginimport org.gradle.api.Projectclass Plugin3 implements Plugin<Project> {    @Override    void apply(Project project) {        println 'plugin3======='    }}
  • 3、 在main目录下创建resources文件夹,在里面创建META-INF/gradle-plugins/com.pf.plugin.properties
    里面就写一句话

        implementation-class=com.pf.plugin.Plugin3注意:com.pf.plugin.properties这个名字,就是将来apply的那个名字    apply plugin: 'com.pf.plugin'就是这个名字
  • 4、上传到本地仓库
    先将项目同步一下,然后在右边的gradle选项中:plugin:Tasks:publishing,里面有四个任务,其中有个叫做publishPluginPublicationToMavenLocal,这个就是上传到本地仓库,双击执行任务,执行成功后会在本地看到

    本地仓库路径:C:\Users\Administrator\.m2\repository里面会看到刚才上传的插件
  • 5、项目中引入插件
    在项目的app模块下的build.gradle中加入引用

        apply plugin: 'com.pf.plugin'    buildscript {        repositories {            mavenLocal()        }        dependencies {            classpath 'com.pf.plugin:plugin:1.0.0'        }    }在terminal中执行    gradlew assembleDebug在日志中会看到 输出了"plugin3=======",说明插件引用成功了

总结

apply plugin: 'com.pftest.plugin'这个名字是resources下的com.pftest.plugin.properties这个名字buildscript {    repositories {        mavenLocal()    }    dependencies {        classpath 'com.pftest.plugin:plugin21:1.0.0'        这里的三段内容是        group 'com.pftest.plugin'        artifactId 'plugin21'        version '1.0.0'    }}

DEMO地址:https://github.com/zhaopingfu/listener20

原创粉丝点击