Gradle系列---自定义插件(一)

听说Gradle插件有三种,不过我只用过一种,哈哈哈~

创建Gradle Module

file -> new Module -> Android Library,输入库名,点击Next

删除无用文件

保留src/main和build.gradle,其他都删除

新建入口文件

src/main下新建groovy\com\blacktoast\stydy\gradle\StudyPlugin.groovy

配置build.gradle

apply plugin: 'groovy'  // 指定groovy插件
apply plugin: 'maven'   // 指定maven插件

// 配置插件信息
group = 'com.blacktoast.study.gradle'
version = '1.0.0'

// 依赖库配置
dependencies {
    // gradle sdk依赖
    compile gradleApi()
    // groovy sdk依赖
    compile localGroovy()
}

// 仓库配置
repositories {
    mavenCentral()
}

// 上传maven仓库任务配置
uploadArchives {
    repositories {
        mavenDeployer {
            // 也可以在这边配置插件信息
//            pom.groupId = 'com.blacktoast.study.gradle'
//            pom.artifactId = 'studygradle'
//            pom.version = '1.0.0'
            
            // 上传到../repo仓库,即本地仓库repo
            repository(url: uri('../repo'))
        }
    }
}

编写StudyPlugin.groovy文件

先同步下,保证两个sdk(gradle sdk、groovy sdk)已经导入,然后编写StudyPlugin.groovy文件

package com.blacktoast.study.gradle

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

public class StudyPlugin implements Plugin {

    @Override
    void apply(Project project) {
        // 新建task
        def studyTask = project.task("study")

        studyTask << {
            println "Welcome to Gradle's World."
        }

        // 设置task对应的group
        studyTask.group = "study"
    }
}

新建properties文件

在src/main下新建resources\META-INF\gradle-plugins\plugin.study.properties,其中plugin.study为插件名,插件名可以自定义。在其中添加以下代码,指定插件入口文件

implementation-class=com.blacktoast.study.gradle.StudyPlugin

上传插件

gradle中存在gradlestudy -> Tasks -> upload -> uploadArchivs(由于在build.gradle文件中配置的),点击这个task执行上传操作

使用自定义gradle插件

在项目的build.gradle中添加配置

...

buildscript {
    repositories {
        maven {
			// 指定本地仓库路径
            url uri('repo')
        }
		...
	}

	...

    dependencies {
		...
		// com.blacktoast.study.gradle为groupId
		// gradlestudy为artifactId
		// 1.0.0为version
		// 对应插件工程中build.gradle中配置的插件信息
		classpath "com.blacktoast.study.gradle:gradlestudy:1.0.0"
	}
}

...

allprojects {
    repositories {
        maven {
			// 指定本地仓库路径
            url uri('repo')
        }
	}
}

...

module中使用插件,plugin.study为properties文件对应的插件名

apply plugin: 'plugin.study'

你可能感兴趣的:(gradle插件)