插件分類
Gradle插件分爲二進制插件和腳步插件
二進制插進:實現了org.gradle.api.Plugin接口的插件,插件可以有plugin ID(是唯一的,plugin id是插件的別名),Gradle自帶的核心插件都有一個plugin id
插件作用
當把插件應用到項目,插件會擴展項gr目功能,幫助在項目構建過程中做許多事情:
- 可以添加任務到項目,幫你完成測試、編譯、打包等
- 可以添加項目構建過程中需要的依賴配置到項目,比如編譯時依賴的第三方庫等;
- 可以向項目中現有的對象類型添加新的擴展屬性、方法等,比如Android{}配置塊就是Android Gradle插件爲Project對象添加的一個擴展
- 對項目進行約定,比如應用Java插件,約定src/main/java目錄下爲源代碼,編譯的時候也編譯這個目錄下的java源代碼文件
如何應用插件到項目
插件的應用都是通過project.apply(Map
1、應用二進制插件
//’java’就是java插件的plugin ID
*方式一:***apply plugin:’java’
//org.gradle.api.plugins.JavaPlugin是Java插件的類型
*方式二:***apply plugin:’org.gradle.api.plugins.JavaPlugin’
//由於org.gradle.api.plugins包是自動導入的
*方式三:***apply:’JavaPlugin’
方式一最常見,完整的插件類型寫法一般適用於我們在build文件中自定義的插件,也就是腳步插件;
2、應用腳本插件
腳本插件就是一個腳本,應用腳本插件就是把這個腳本加載進來,和二進制插件不同的是腳本插件使用的是from關鍵字,後面緊跟的是一個腳本文件,可以使本地的,也可以使網絡的(網絡的要使用HTTP URL) 形如:apply from:…
腳本插件雖然不是真正的插件,但他是腳本文件模塊化的基礎;我們可以將龐大的腳本文件進行分塊、分段整理拆分爲一個個單一職責的的文件,然後使用apply from來引用這些腳本文件,比如:將常用函數都放在utils.gradle文件中,供其他腳本文件引用
Project.apply()方法的另外兩種形式
1、apply(Closure closure)
apply{
plugin 'java'
}
該閉包用來配置一個ObjectConfigurationAction對象,在閉包中可以使用該對象的方法、屬性等進行配置;效果和apply plugin:’java’一樣
2、apply(Action
應用第三方發佈的插件
第三方發佈的作爲jar的二進制插件,在應用是,必須先在buildscript{}裏配置其classpath才能使用,這點不像Gradle提供的內置插件。比如Android Gradle插件,就屬於Android發佈的第三方插件,需要先配置:
buildscript{
dependencies{
classpath 'com.android.tools.build:gradle:1.5.0'
}
}
buildscript{}塊是一個在構建項目之前,爲項目進行前期準備和初始化相關配置依賴的地方,配置好所需依賴,就可以應用插件了