androidStudio5.0 自定义Plugin

  • 首先工程中新建一个Android Module项目,类型选择Android Library

在这里插入图片描述

  • 删除libs、src/androidTest、src/test、src/main下所有的目录,在src/main下新建groovy 和resources/META-INF/gradle-plugins目录

在这里插入图片描述

  • 修改build.gradle文件
apply plugin: 'groovy'
apply plugin: 'maven'

sourceSets {
    main {
        groovy {
            srcDir 'src/main/groovy'
        }
        resources {
            srcDir 'src/main/resources'
        }
    }
}

dependencies {
    // gradle sdk
    implementation gradleApi()
//    // groovy sdk
    implementation localGroovy()
}

repositories {
    mavenCentral()
}


uploadArchives {
    repositories {
        mavenDeployer {
            pom.groupId = 'com.hxg.gradle.study'
            pom.artifactId = 'GradleOnePlugin'
            pom.version = '1.0.0'
            // maven本地仓库的目录
            repository(url: uri('../BuildSrc'))
        }
    }
}
  • 创建plugin插件

    在src/main/groovy下创建 GradleOnePlugin

/**
 * 这里的包名千万不能丢(你可以先建个class,然后修改后缀名为groovy),否者会出现
 * Unable to load class ‘......Plugin’
 * 血的教训
 */
package com.hxg.gradle.study

import org.gradle.api.Plugin
import org.gradle.api.Project

/**
 * 自定义插件
 */
class GradleOnePlugin implements Plugin<Project> {
    /**
     * 插件被引入是需要执行的方法
     * @param project 引入当前插件的project
     */
    @Override
    void apply(Project project) {
        println 'my Plugin  is  =====> ' + project.name
    }
}

这里的包名千万不能丢(你可以先建个class,然后修改后缀名为groovy),否者会出现 Unable to load class ‘…Plugin’

  • 定义插件名称

在resources/META-INF/gradle-plugins目录下新建一个properties文件,注意该文件的命名就是你使用插件的名字

在这里插入图片描述
properties文件内容:

implementation-class=com.hxg.gradle.study.GradleOnePlugin
  • 打包到本地Maven仓库
uploadArchives {
    repositories {
        mavenDeployer {
            pom.groupId = 'com.hxg.gradle.study'
            pom.artifactId = 'GradleOnePlugin'
            pom.version = '1.0.0'
            // maven本地仓库的目录
            repository(url: uri('../BuildSrc'))
        }
    }
}

执行task任务
在这里插入图片描述
生成插件

在这里插入图片描述

  • 插件的使用

在项目的build.gradle中

buildscript {
    repositories {
        // maven插件目录
        maven{
            url uri('BuildSrc')
        }
        google()
        jcenter()

    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.4.1'
        //使用自定义插件
        classpath 'com.hxg.gradle.study:GradleOnePlugin:1.0.0'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

在module中引用

apply plugin: 'com.hxg.gradle.study'

执行gradlew clean命令

在这里插入图片描述

发布了316 篇原创文章 · 获赞 660 · 访问量 122万+

猜你喜欢

转载自blog.csdn.net/huangxiaoguo1/article/details/103630999