Android使用gradle来打包应用越来越普遍了,gradle打包的形式越来越多样化了。butterknife自定义了插件用来生成R2文件。tinker自定义了插件来生成diff。写一个插件可以更加清晰的看到自己打包的流程,同时写好一个插件也需要对打包的流程非常的熟悉。当然这篇文章没有这么的高深,简单的介绍怎么自定义一个插件以及一些简单的打包命令和配置。插件可以做的事情确实太多了。
自定义Gradle Plugin
- 新建一个java library module。
apply plugin: 'java'
apply plugin: 'groovy' // gradle library
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile gradleApi()
}
sourceCompatibility = "1.7"
targetCompatibility = "1.7"
group='com.egos.gradle.plugins'
name='pluginsample'
version='0.0.1'
- 新建一个类(.groovy)继承Plugin,那么一个简单的插件就定义好了。
// 需要创建新的文件夹groovy,将.groovy文件放在里面
package com.egos.gradle.plugins;
class SamplePlugin implements Plugin<Project> {
protected final Logger log = Logging.getLogger(getClass());
void apply(Project project) {
println 'This is a sample plugin.'
}
}
- 创建.properties用来指定插件实现类,并发布的在本地(可以调用gradle uploadArchives将plugin发布在本地)。在main目录下面创建
resources/META-INF.gradle-plugins/com.egos.gradle.properties
。
# 最后使用的时候需要com.egos.gradle。
implementation-class=com.egos.gradle.plugins. SamplePlugin
执行gradle uploadArchives
就会发布在本地仓库。
apply plugin: 'maven'
group=