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'