自定义Gradle Plugin

Gradle 是 Android 构建环节非常重要的一环,但并不是所有Android开发者对Gradle都足够熟悉,因为它在我们平时业务开发中,相对使用频率还是较少的。 小编准备以自定义Gradle插件为入口,带大家一起认识一下Gradle。

自定义Gradle插件的方式

自定义Gradle的方式一共有三种: 1.直接在构建文件build.gradle中编写Plugin,这种方法写的Plugin无法被其他构建文件引用 2.buildSrc工程,可以在自己的工程内随意使用,但是其他工程就无法使用 3.单独的工程中自定义Gradle Plugin,上传到远端maven库等,其他工程通过添加依赖,引用这个插件

Gradle plugin 示例

1.在build.gradle中编写

apply plugin: DemoPlugin

class DemoPlugin implements Plugin<Project>{
    @Override
    void apply(Project target) {
       println("DemoPlugin in build.gradle")
    }
}

然后build一下,可以看到控制台输出的Log了。

2.在buildSrc Module中创建

首先创建一个module,名字必须为buildSrc,选择 Java Library。然后module中会自动生成一个java文件夹以及对应的java文件,我们需要把java文件夹删掉,再重建一个groovy 文件夹以及groovy文件。

DemoPlugin.groovy:

package com.example

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

class DemoPlugin implements Plugin<Project>{
    @Override
    void apply(Project project){
        println("DemoPlugin in buildSrc Module")
    }
}

buildSrc Module 中的build.gradle 文件:

apply plugin: 'groovy'

dependencies {
  implementation gradleApi()
  implementation localGroovy()
}

最后在我们的app 下的 build.gradle 调用即可:

apply plugin: com.example.DemoPlugin

3.生成可供其他项目复用的插件

首先跟上一种方式一样,创建一个Module,名字没有要求,我们建一个 gradle-plugin:

DemoPlugin.groovy 的创建同上。

主要差异在于module中的build.gradle,主要工作是把我们的gradle插件编译成一个jar包,放到一个地方供工程使用, 我们这里直接放在工程的plugin_libs文件夹下:

apply plugin: 'groovy'
apply plugin: 'maven'
dependencies {
    compile gradleApi()
    compile localGroovy()
}

group='com.example.plugin'
version='0.0.1'
archivesBaseName='gradle-plugin'

uploadArchives{
    repositories {
        mavenDeployer{
            repository(url:uri('../plugin_libs'))
        }
    }
}

然后,点击uploadArchives生成相应的插件

可以看到对应的目录下已经有我们构建的插件了:

接着,我们需要在我们的工程中依赖这个插件,工程根目录的build.gradle:

buildscript {
  repositories {
      google()
      jcenter()
      maven{
          url(uri('./plugin_libs'))
      }
  }
  dependencies {
    classpath 'com.android.tools.build:gradle:3.2.1'
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    classpath 'com.example.plugin:gradle-plugin:0.0.1'
  }
}

最后,调用的时候依然是在app底下的build.gradle:

apply plugin: com.example.DemoPlugin

当然,我们可以把插件发布到公司的仓库,这样其它项目也能直接依赖了。

这里主要简单介绍自定义Gradle插件的方法,我们后面会做一些有实际功能的插件,再给大家介绍。

原文发布于微信公众号 - Android每日一讲(gh_f053f29083b9)

原文发表时间:2018-11-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏向治洪

Android Studio安装插件

Android Studio安装插件的方式其实和Eclipse大同小异。废话不多说,直接上图: ? 区域1:你当前已经安装了的插件 区域2:在线安装 区...

2078
来自专栏向治洪

studio安装插件

Android Studio安装插件的方式其实和Eclipse大同小异。废话不多说,直接上图: ? 区域1:你当前已经安装了的插件 区域2:在线安装 区...

1955
来自专栏上善若水

013android初级篇之Android Studio 引用源码模块,jar及so文件

013android初级篇之Android Studio 引用源码模块,jar及so文件

2062
来自专栏dalaoyang

Jenkins部署码云SpringBoot项目

Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。 (以...

1484
来自专栏云计算教程系列

如何在Ubuntu 18.04上安装Java

Java和JVM(Java的虚拟机)是许多软件所必需的,包括Tomcat,Jetty,Glassfish,Cassandra和Jenkins。

1.8K2
来自专栏xingoo, 一个梦想做发明家的程序员

基于Spring Boot的Logback日志轮转配置

在生产环境下,日志是最好的问题调试和跟踪方法,因此日志的地位是十分重要的。我们平时经常使用的log4j,slf4j,logback等等,他们的配置上大同小异。...

2117
来自专栏Rainbond开源「容器云平台」

好雨云帮一周问答集锦(2017.04.17-2017.04.23)

1403
来自专栏杂烩

javaee项目性能检测之JavaMelody

    它并不是一个模拟请求类似JMeter的压力测试工具,而是一个衡量并且计算在应用上的操作信息的工具,也就是说,它只负责对行为进行监控,而不负责触发操作。J...

3312
来自专栏向治洪

Android Studio安装插件Genymotion

Android Studio安装插件的方式其实和Eclipse大同小异。废话不多说,直接上图: ? 区域1:你当前已经安装了的插件 区域2:在线安装 区...

1958
来自专栏青玉伏案

JavaEE开发之SpringMVC中的静态资源映射及服务器推送技术

在上篇博客中,我们聊了《JavaEE开发之SpringMVC中的自定义拦截器及异常处理》。本篇博客我们继续的来聊SpringMVC的东西,下方我们将会聊到js、...

2406

扫码关注云+社区

领取腾讯云代金券