《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'
分类:
Gradle
标签:
gradle权威指南
, Gradle插件
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
2016-03-19 Android知识体系