美文网首页
Gradle Plugin

Gradle Plugin

作者: 折剑游侠 | 来源:发表于2021-01-29 13:39 被阅读0次

    自定义gradle插件,三种创建方式:

    • build.gradle
    • buildSrc
    • plugin module
    build.gradle

    app.build.gradle中直接编写

    apply plugin: AppPlugin
    class AppPlugin implements Plugin<Project> {
        @Override
        void apply(Project project) {
            project.task('AppPluginTask') {
                doLast {
                    println "AppPluginTask"
                }
            }
        }
    }
    
    buildSrc
    1. 根目录下创建文件夹buildSrc
    2. buildSrc下创建build.gradle
    apply plugin: 'java-library'
    apply plugin: 'kotlin'
    apply plugin: 'maven'
    
    sourceSets {
        main {
            resources {
                srcDir 'src/main/resources'
            }
        }
    }
    
    buildscript {
        ext.kotlin_version = '1.4.20'
        repositories {
            mavenCentral()
        }
        dependencies {
            classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        }
    }
    
    repositories {
        google()
        jcenter()
        mavenCentral()
    }
    
    dependencies {
        implementation gradleApi()
        implementation localGroovy()
        implementation 'com.android.tools.build:gradle:4.1.2'
        implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
    }
    

    编译一下项目

    1. 创建java文件夹和resources文件夹


    2. java下创建包名,然后新建类MyPlugin实现Plugin接口即可

    package com.chenxuan.gradle;
    
    import org.gradle.api.Plugin;
    import org.gradle.api.Project;
    
    public class MyPlugin implements Plugin<Project> {
        @Override
        public void apply(Project project) {
            System.out.println("MyPlugin");
        }
    }
    
    1. resources下创建文件夹META-INF.gradle-plugins,在其下创建properties文件,properties文件名应为packagename.properties


    2. 修改properties文件
    implementation-class=com.chenxuan.gradle.CustomPlugin
    
    1. app下build.gradle引入插件,id为插件所在包名
    plugins {
        id 'com.android.application'
        id 'kotlin-android'
        id 'kotlin-kapt'
        id 'com.chenxuan.gradle'
    }
    
    plugin module

    新建module,删光文件夹下所有文件,只留build.gradle

    apply plugin: 'java-library'
    apply plugin: 'kotlin'
    apply plugin: 'maven'
    
    sourceSets {
        main {
            java {
                srcDir 'src/main/java'
            }
            resources {
                srcDir 'src/main/resources'
            }
            kotlin {
                srcDir 'src/main/kotlin'
            }
        }
    }
    
    repositories {
        google()
        jcenter()
        mavenCentral()
    }
    
    dependencies {
        implementation gradleApi()
        implementation localGroovy()
        implementation 'com.android.tools.build:gradle:4.1.2'
    }
    

    接下来流程和buildSrc一致,得到最终目录:



    build.gradle下新增

    uploadArchives {
        repositories {
            mavenDeployer {
                pom.groupId = 'com.chenxuan.plugin'//包名
                pom.artifactId = 'custom-plugin'//id
                pom.version = '1.0.0'//版本号
                repository(url: uri('../repo'))
            }
        }
    }
    

    执行uploadArchives task,根目录下得到Repo文件夹。


    根目录下build.gradle引入插件



    app下build.gradle添加插件

    plugins {
        id 'com.android.application'
        id 'kotlin-android'
        id 'kotlin-kapt'
        id 'com.chenxuan.plugin'
    }
    

    相关文章

      网友评论

          本文标题:Gradle Plugin

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