自定义Gradle Plugin和Groovy语法简单介绍

1.介绍:

官方介绍


image.png

翻译:Gradle插件将构建逻辑的可重用部分打包起来,这些逻辑可以跨许多不同的项目和构建使用。Gradle允许您实现自己的插件,这样您就可以重用您的构建逻辑,并与他人共享它。

2.Gradle Plugin本质

本质:就是把逻辑独立的代码抽取和封装

3.Plugin的最基本用法

 3.1我们在 build.gradle 里编写:
//plugin简单使用
apply plugin: PluginDemo

class PluginDemo implements Plugin{
    @Override
    void apply(Project target) {
            println "Hello"
        }
  }

通过控制台输入:gradlew
打印结果:

plugin_one.gif

 3.2.如何动态配置呢。像我们build.gradle文件中android{ ... }那样?

  使用:extension,他不是一个类。

//plugin简单使用
apply plugin: PluginDemo

class PluginDemo implements Plugin{
    @Override
    void apply(Project target) {
        def extension = new ExtensionDemo()
        println "Hello ${extension.name}"
    }
}

class ExtensionDemo{
    def name = "张三"
}

打印结果

plugin_two.gif

使用动态配置:

//plugin简单使用
apply plugin: PluginDemo

class PluginDemo implements Plugin{
    @Override
    void apply(Project target) {
        def extension = target.extensions.create("hencoder",ExtensionDemo)
        //稍后执行
        target.afterEvaluate {
            println "Hello ${extension.name}"
        }
    }
}

class ExtensionDemo{
    def name = "张三"
}

hencoder{
    name = "李四"
}

执行结果:


plugin_three.gif

4.自定义Plugin

步骤:

   1.在Project下创建一个文件,文件名为buildStr(名称必须是这个),或者创建一个javalibrary的model,注意需要在工程下的setting.gradle中去除新建的plugin
   2.在目录下边新建resources/META-INF/gradle-plugins/xxx.properties 注意后缀必须是.properties
      目录结构:

      resources
         META-INF
            gradle-plugins
              xxx.properties(xxx为插件的名称,最终需要在build.gradle中配置)

   3.在main下边创建一个类,需要为.groovy文件,实现Plugin,实现apply方法
   4.在xxx.properties文件添加 implementation-class=包名.第三步创建的类名
   5.通过上方最基本的使用,extension的用法
   6.在项目的build.gradle中添加我们的plugin。
例如:

image.png

执行结果:


plugin_four.gif

5.关于buildStr的目录

1.这是 gradle 的⼀个特殊⽬录,这个⽬录的 build.gradle 会⾃动被执⾏,即使不配配置进settings.gradle
2.buildSrc 的执⾏早于任何⼀个 project,也早于 settings.gradle。它是⼀个独⽴的存在
3.buildSrc 所配置出来的 Plugin 会被⾃动添加到编译过程中的每⼀个 project 的 classpath,因此它们才可以
  直接使⽤ apply plugin: 'xxx' 的⽅式来便捷应⽤这些 plugin
4.settings.gradle 中如果配置了 ':buildSrc' ,buildSrc ⽬录就会被当做是⼦ Project ,

因此会被执⾏两遍。所以在 settings.gradle ⾥⾯应该删掉 ':buildSrc' 的配置

你可能感兴趣的:(自定义Gradle Plugin和Groovy语法简单介绍)