Gradle教程系列 ——自定义Gradle插件

Gradle 学习

Gradle是一个基于Apache AntApache Maven概念的项目自动化构建工具。它使用一种基于Groovy特定领域语言(DSL, domain-specific language )来声明项目设置,而不是传统的XML。

gradle是一个自动化工具。配置gradle时,使用的是Groovy语言。Groovy的语法与Java类似。

Gradle作为一个异常强大的构建工具,为了满足不同平台的需求,比如:Java平台有Java构建逻辑,Android平台有Android构建逻辑。Gradle务必是要支持自定义构建的,这个功能正是由Gradle Plugin提供,而对应于Android工程的构建逻辑就是由Android Gradle Plugin实现的了。

Gradle插件结构

自定义gradle插件时,既可以使用groovy语言,也可以使用Java或者Kotlin语言。一般我都是使用groovy语言。

自定义插件的目录结构如下:

plugin
└── src
    └── main
    |   ├── groovy
    |   |   └── com
    |   |          └── package
    |   |               └── name
    |   └── resources
    |       └── META-INF
    |           └── gradle-plugins
    |_ build.gradle

由上述插件结构可知,自定义插件大致可分为三个部分。groovy目录,resources目录和build.gradle配置文件。

build.gradle

apply plugin: 'groovy'
apply plugin: 'maven'

dependencies {
    implementation gradleApi()
    implementation localGroovy()
}

META-INF/gradle-plugins

在META-INF/gradle-plugins 目录下添加一个属性文件,主要用来使得Gradle找到该插件。

implementation-class=com.nxiangbo.plugin.main.CustomPlugin

Groovy 目录

为了创建Gradle插件,我们必须创建一个实现Plugin接口的类。当我们将自定义的插件应用到项目时,Gradle就会创建这个类的实例,并调用这个类的apply()方法。而project作为该方法的参数,因此插件可以使用project的配置。下面我们在groovy目录下创建CustomPlugin.groovy。

 class CustomPlugin implements Plugin<Project> {
    @Override
    void apply(Project project) {
        // TODO
    }
}

发布插件

只需要在build.gradle文件中添加uploadArchives task就可以将插件发布到本地。

afterEvaluate { project ->
    uploadArchives {
        repositories {
            mavenDeployer {
                repository(url: uri('D:/repo'))
            }
        }
    }
}

应用插件

在需要使用该插件的项目中的build.gradle 文件中,添加如下代码

apply plugin: 'customplugin'

customPlugin {
    versionName='version'
    versionCode='1.1.0'
}

Gradle插件调试

首先,在Android Studio 中设置Edit Configurations -> +号 -> Remote -> 填写Host和端口号

gradle调试

然后,运行gradle :app:clean -Dorg.gradle.debug=true --no-daemon

最后,点击调试按钮即可。
image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,633评论 25 709
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 14,480评论 2 59
  • 1. 概述 Android项目的构建过程是由Gradle插件完成的,Gradle 插件是在Gradle框架的基础上...
    小芸论阅读 12,543评论 1 42
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,468评论 19 139
  • 周冬雨和马思纯因为《七月与安生》这部电影双双获得了金钟奖影后,我马上把这部存在备看清单中的电影拉出来先看了。经过市...
    坂坂阅读 2,778评论 2 2