公司项目中有用到gradle插件,网上很多都讲的不是很好,现在总结一下自定义一个gradle插件的步骤:
1、新建一个Android project
2、新建一个Android lib module,
3、并把main文件夹下的所有资源文件(res文件夹)、AndroidMainfest.xml文件、java文件全部删除。只保留gradle文件和src/main目录。
![](https://img.haomeiwen.com/i1728184/92110aebd41f30c7.png)
4、在main文件夹下新建一个groovy文件夹,接着在新建一个LinkPlugin.groovy文件,和java一样,这个groovy文件的包名为com.link.plugin
![](https://img.haomeiwen.com/i1728184/66cbb7cd2971f73c.png)
5、让LinkPlugin视线Plugin<Project>接口,并实现apply方法,apply方法中其实就是我们要写的插件的逻辑。
package com.link.plugin
import org.gradle.api.Plugin
import org.gradle.api.Project
public class LinkPlugin implements Plugin<Project> {
void apply(Project project) {
System.out.println("========================");
System.out.println("hello gradle plugin!");
System.out.println("========================");
}
}
6、新建好了插件,那么我们怎么才能找到插件呢?在main文件夹下,新建一个resources/META-INF/gradle-plugins文件夹,并在该文件夹下新建一个com.link.plugin.properties文件里添加如下代码:
implementation-class=com.link.plugin.LinkPlugin
implementation-class后面跟的是前面我们定义插件的全类名。
properties文件夹的位置如下:
![](https://img.haomeiwen.com/i1728184/d3965cba93f779f0.png)
注意:properties文件的名称是插件的id,当我们使用apply关键字应用插件的时候会使用到
(7) 因为我们要用到groovy以及后面打包要用到maven,所以在我们自定义的Module下的build.gradle需要添加如下代码:
apply plugin: 'groovy'
apply plugin: 'maven'
dependencies {
//gradle sdk
compile gradleApi()
//groovy sdk
compile localGroovy()
}
repositories {
mavenCentral()
}
打包到本地Maven
前面我们已经自定义好了插件,接下来就是要打包到Maven库里面去了,你可以选择打包到本地,或者是远程服务器中。在我们自定义Module目录下的build.gradle添加如下代码:
apply plugin: 'groovy'
apply plugin: 'maven'
dependencies {
//gradle sdk
compile gradleApi()
//groovy sdk
compile localGroovy()
}
repositories {
mavenCentral()
}
group='com.link.plugin'
version='1.0.0'
uploadArchives {
repositories {
mavenDeployer {
//提交到远程服务器:
// repository(url: "http://www.xxx.com/repos") {
// authentication(userName: "admin", password: "admin")
// }
//本地的Maven地址设置为D:/repos
repository(url: uri('C:/repos'))
}
}
}
其中,group和version后面会用到,我们后面再讲。虽然我们已经定义好了打包地址以及打包相关配置,但是还需要我们让这个打包task执行。点击AndroidStudio右侧的gradle工具,如下图所示:
![](https://img.haomeiwen.com/i1728184/9138705fe989a6b4.png)
可以看到有uploadArchives这个Task,双击uploadArchives就会执行打包上传啦!执行完成后,去我们的Maven本地仓库查看一下:
![](https://img.haomeiwen.com/i1728184/2630ada58e2c552a.png)
我们打开maven-metadata.xml文件看看
![](https://img.haomeiwen.com/i1728184/b5c16247d077f123.png)
里面可以看出,插件的groupId为com.link.plugin,artifactId为plugin,默认是module的名称,version是1.0.0
使用插件
接下来就是使用自定义的插件了,一般就是在app这个模块中使用自定义插件,因此在app这个Module的build.gradle文件中,需要指定本地Maven地址、自定义插件的名称以及依赖包名。简而言之,就是在app这个Module的build.gradle文件中后面附加如下代码:
buildscript {
repositories {
maven {//本地Maven仓库地址
url uri('C:/repos')
}
}
dependencies {
//格式为-->groupId:artifactId:version
classpath 'com.link.plugin:plugin:1.0.0'
}
}
//com.link.plugin为resources/META-INF/gradle-plugins
//下的properties文件名称
apply plugin: 'com.link.plugin'
好啦,接下来就是看看效果啦!先clean project(很重要!),然后再make project.从messages窗口打印如下信息:
![](https://img.haomeiwen.com/i1728184/91816ac8501a046a.png)
网友评论