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插件》 gradle调试

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

最后,点击调试按钮即可。
《Gradle教程系列 ——自定义Gradle插件》 image.png

    原文作者:nxiangbo
    原文地址: https://www.jianshu.com/p/b693eb7060f9
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞