前言
前面幾篇文章筆者對Gradle的一些基礎認知,groovy基礎語法,以及Gradle 項目中常用的一些api進行了講解。
今天筆者再來講解一些關于Gradle插件
的使用
1.定義
首先來講下Gradle
和Gradle插件
有啥區別?
Gradle
是一套構建工具,其內部構建過程主要是以Project
組成一個樹形的生態系統,整個構建流程有自己的生命周期。每個Project又是由若干個Task組成。
Gradle插件
你可以理解為是運行在Gradle
這套構建系統上的單個task
,如 執行腳本的編寫 ,字節碼插莊等,都可以依靠
Gradle
插件實現。我們常用的
Android Gradle Plugin
也是一個Gradle插件模塊:
應用插件的ID:‘com.android.application’ 或者lib庫:‘com.android.library’
2.有哪些優勢
- 1.邏輯復用 :Gradle插件將一個公共模塊單獨的抽離出來,然后上傳到共享平臺,供其他項目使用
- 2.插件配置擴展 :Gradle插件聲明插件擴展,將插件內部參數暴露給對應的Project進行配置,大大提高了插件的可擴展性。
3.插件的形式
-
- build script :直接在build.gradle構建腳本中創建對應的插件,這種方式只對當前Project有效,不支持對外提供調用,無復用性,一般不推薦使用
-
- buildSrc模塊 :這種方式是編譯器提供的特殊模塊,編譯器可以自動識別該模塊的,對所有的Project可見。但是在項目外不可見,無法給其他工程使用,復用性差。
-
- 獨立插件項目 :替插件創建一個單獨的項目,這個項目可以單獨的打包成一個jar包,然后發布到企業服務器上供其他項目使用,通常這個插件中包含了一個或多個任務的組合,實現具體的插件功能
4.自定義插件實戰
下面我會以第三種形式來大家實現一個簡單的Gradle插件功能:
需求如下:
在編譯過程中實現:將當前編譯的版本信息發布到公司服務器上,可以在本地服務器上實時查看編譯的版本日志,通過日志的分析可以對當前編譯版本進行優化。
步驟如下 :
- 1.初始化插件模塊目錄結構
- 2.創建插件實現類
- 3.創建插件擴展Bean
- 4.創建插件實現的任務:上傳版本信息
- 5.將插件擴展和插件任務集成到Project生命周期中
- 6.插件發布
- 7.插件引入
步驟1.初始化插件模塊目錄結構
首先創建一個Java or Kotlin Library
的模塊,
步驟1創建.png
在創建的模塊build.gradle
中引入:
plugins {
id 'groovy' // Groovy Language
//id 'org.jetbrains.kotlin.jvm' // Kotlin
id 'java-gradle-plugin' // Java Gradle Plugin
}
- groovy :使用groovy語言開發
- org.jetbrains.kotlin.jvm :使用kotlin開發引入kotlin核心插件庫
- java-gradle-plugin :Gradle插件的一個輔助插件,可以在我們build目錄下自動生成資源屬性
設置sourceSets
:
sourceSets {
main {
groovy {
srcDir 'src/main/groovy'
}
resources {
srcDir 'src/main/resources'
}
}
}
工程目錄結構如下:
插件目錄結構.png
步驟2.創建插件實現類
class UploadVersionPlugin implements Plugin<Project>{
@Override
void apply(Project project) {
println "begin:now this is a ${project.name} 's upload plugin"
}
}
步驟3.創建插件擴展Bean
class VersionInfo {
//版本名稱
String versionName
//版本代碼
int versionCode
//版本更新信息
String versionUpdateInfo
}
-
project
+關注
關注
0文章
35瀏覽量
13279 -
插件
+關注
關注
0文章
323瀏覽量
22414 -
gradle
+關注
關注
0文章
26瀏覽量
703
發布評論請先 登錄
相關推薦
評論