《Gradle权威指南》--Gradle插件

No1:

应用插件

apply plugin:'java'
apply plugin:org.gradle.api.plugins.JavaPlugin
apply plugin:JavaPlugin

这三种写法等价

注:‘java‘是一个plugin id

No2:

应用脚本插件

复制代码
//version.gradle
ext{
    versionName='1.0.0'
    versionCode=1
}

//build.gradle
apply from:'version.gradle'
task ex52PrintlnTask<<{
    println "App版本是:${versionName},版本号是:${versionCode}"
}
复制代码

结果

No3:

复制代码
//apply方法
void apply(Map<String,?> options);
void apply(Closure closure);
void apply(Action<? super ObjectConfigurationAction> action);
//闭包方式
apply{
    plugin 'java'
}
//Action方式
apply(new Action<ObjectConfigurationAction>(){
    @Override
    void execute(ObjectConfigurationAction objectConfigurationAction){
        objectConfigurationAction.plugin('java')
    }
})
复制代码

No4:

应用第三方发布的插件

复制代码
buildscript{
    repositoried{
        jcenter()
    }
    dependencies{
        classpath 'com.android.tools.build:gradle:1.5.0'
    }
}

apply plugin: 'com.android.application'
复制代码

No5:

使用plugins DSL应用插件

plugins{
    id 'java'
}

plugins{
    id "org.sonarqube" version "1.2"
}

No6:

自定义插件

apply plugin:Ex53CustomPlugin
class Ex53CustomPlugin implements Plugin<Project>{
    void apply(Project project){
        project.task('ex53CustomTask')<<{
            println "这是一个通过自定义插件方式创建的任务"
        }
    }
}

结果

注:自定义的插件必须要实现Plugin接口,这个接口只有一个apply方法,该方法在插件被应用的时候执行

No7:

创建一个Groovy工程

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

插件类

复制代码
package com.github.rujews.plugins

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

class Ex53CustomPlugin implements Plugin<Project>{
    @Override
    void apply(Project target){
        target.task('ex53CustomTask')<<{
            println "这是一个通过自定义插件方式创建的任务"
        }
    }
}
复制代码

在src/main/resources/META-INF/gradle-plugins/目录下新建一个名字为plugin id的properties的文件

implementation-class=com.github.rujews.plugins.Ex53CustomPlugin

其他地方调用

buildscript{
    dependencies{
        classpath files('libs/example53.jar')
    }
}

apply plugin: 'com.github.rujews.plugins.ex53customplugin'

 

posted @   嘉禾世兴  阅读(289)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
历史上的今天:
2016-03-19 Android知识体系
点击右上角即可分享
微信分享提示