Gradle - 使用Gradle插件

使用Gradle插件

Gradle的核心在自動化的世界中並沒有做太多的事情。所有有用的特性,例如:編譯Java代碼,都是通過添加插件的方式來實現的。插件添加新任務(例如:JavaCompile),領域對象(例如:SourceSet),約定(例如: Java 源代碼路徑爲src/main/java)。

插件能做什麼

在項目中引用插件能夠擴展項目的功能。它能夠實現的如下:

  • 擴展Gradle的Model(例如:添加一些可配置的DSL)
  • 根據約定配置項目信息 (例如:添加新任務或者配置合理的默認值)
  • 引用特殊的配置 (例如:添加新任務或者配置合理的默認值)

通過引用插件方式而不是在項目構建腳本中添加邏輯代碼,我們能夠獲得更多的好處:

  • 提升代碼複用率和減少跨多個項目相識邏輯的維護成本
  • 允許更高程度的模塊化,增強可理解性和組織性
  • 封裝命令式邏輯,使得狗叫腳本儘可能的保持聲明性

插件的類型

在Gradle中有兩種通用的插件類型,腳本插件和二進制插件。
腳本插件是額外的構建腳本,能夠更進一步配置構建內容,並且通常使用聲明式的方式來操作構建內容。雖然腳本插件可以是外部的並從遠程的服務器獲取,但是它們通常會在本地構建中使用(例如:項目內中引用APlugin.gradle)。

二進制插件是實現了Plugin接口並且使用編程的方式來操作構建項目的類。它可以定義在構建腳本中,項目的結構中或者在外部的一個插件jar中。

插件通常是從腳本插件開始(因爲這樣比較容易編寫),然後隨着代碼變得越重要,它會被遷移到更容易測試並且可以在多個項目和組織間共享的二進制插件中。

使用插件

爲了使用封裝在插件中的邏輯,Gradle需要執行兩個步驟。第一,Gradle需要解析插件,然後在目標上應用這個插件,通常是Project

解析插件意味着需要查找包含指定插件的jar的正確版本,並且將它添加到腳本的類路徑中。一旦插件解析完成,它的API將可以在腳本中使用。腳本插件會在應用他們的時候從特殊的文件路徑或者URL自解析。作爲Gradle核心的二進制插件會自動解析。

應用一個插件實際是在你想要家強的項目上執行的是插件的Plugin.apply(T)。應用插件是冪等的,你可以在項目中安全的多次應用任何插件也不會有影響。

使用一個插件最常見的用例場景是在當前項目中解析並應用它。由於這是一種常見的用例,建議構建腳本的作者使用plugins DSL在一步就完成解析和應用插件。

腳本插件

在這裏插入圖片描述 腳本插件自動解析,可以從本地文件系統或者遠程服務器獲取。本地文件系統的文件路徑是相對於項目目錄的,而遠程的文件路徑是通過HTTP URL指定。多個腳本插件(任何一種方式)可以被應用於一個指定的目標。

二進制插件

你可以通過插件id來應用插件,id是一個全局唯一的標識符或者名字。核心的Gradle插件的特殊之處在於他們使用短名稱,例如 核心插件JavaPlugin的名稱 'java'。其他所有的二進制插件必須使用全名格式的插件id(例如 'com.github.foo.bar'),雖然有一些遺留的插件仍然使用短名稱、不合格的格式。要在哪個地方設置插件id取決於你使用的是plugins DSL 或者 buildscript block

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章