自定义Gradle插件
开发发布出去的Gradle插件
- 新建一个module,用于开发gradle插件
- 将Module里面的内容删除,只保留build.gradle文件和src/main目录
- 由于是基于groovy开发的,所以需要在main目录下新建groovy目录
- 为了让我们的groovy类申明为gradle的插件,新建的groovy需要实现org.gradle.api.Plugin接口
package com.hc.plugin
import org.gradle.api.Plugin
import org.gradle.api.Project
public class MyPlugin implements Plugin<Project> {
void apply(Project project) {
System.out.println("========================");
System.out.println("hello gradle plugin!");
System.out.println("========================");
}
}
打包到本地Maven
repositories {
mavenCentral()
}
uploadArchives {
repositories {
mavenDeployer {
pom.groupId = 'com.xrouter.plugin'
pom.artifactId = 'guardplugin'
pom.version = '1.0.0'
repository(url: uri('../repo'))
}
}
}
使用自定义的插件
apply plugin: 'XX'
buildscript {
repositories {
maven { // 本地Maven仓库地址
url '../repo'
}
}
dependencies {
classpath 'com.xrouter.plugin:guardplugin:1.0.0'
}
}
- 需要告知gradle,哪一个是自定义的插件类。具体是这样的,需要在main目录下新建resources目录,然后在resources目录里面再新建META-INF目录,再在META-INF里面新建gradle-plugins目录【这些都是不能变得】,最后在gradle-plugins目录里面新建properties文件,注意这个文件的命名,你可以随意取名,但是后面使用这个插件的时候,会用到这个名字。如取名:XX.properties
那么在使用自定义的插件时候则需要写成: apply plugin: 'XX'
然后在XX.properties文件里面指明你自定义的类
implementation-class=XX.xx.MyPlugin
开发只针对当前项目的Gradle插件
对于不需要打包出去的,只是在项目中使用的插件,可以按照下面的方式进行开发。
- 新建Module,名称必须为buildSrc
- 修改build.gradle内容:
apply plugin: 'groovy'
dependencies {
compile gradleApi()//gradle sdk
compile localGroovy()//groovy sdk
}
repositories {
jcenter()
}
- 在需要使用这个插件的模块的build.gradle中加入
apply plugin: 包名.XXXPlugin