Gradle學習-4 創建二進制插件工程

二進制插件工程創建有兩種方式:

  • 創建獨立的工程,調試的時候,需要手動發布成一個二進制插件jar包,給其他工程里面引用,進行功能測試。這種方式是比較麻煩的。
  • 創建buildSrc子工程,它是一個大工程中的子工程,把插件的邏輯寫在里面,這樣Gradle在構建的時候就會自動將其打包為一個二進制插件jar包。

注:以下示例基于Gradle8.0

1、創建一個buildSrc子工程

  • 在根目錄下新建文件夾buildSrc
  • 在buildSrc中新建build.gradle文件

build.gradle

//引用 Groovy 插件,編譯插件工程中的代碼
plugins{id 'groovy'
}//聲明倉庫地址
repositories {jcenter()
}//聲明依賴包
dependencies {implementation gradleApi()implementation localGroovy()
}
  • 在buildSrc目錄下創建目錄src/main/groovy/包名
  • 新建 RouterPlugin.groovy 文件

在這里插入圖片描述

RouterPlugin.groovy

package com.leon.router.gradleimport org.gradle.api.Plugin
import org.gradle.api.Projectclass RouterPlugin implements Plugin<Project>{//實現apply方法,注入插件邏輯@Overridevoid apply(Project target) {println("我是 RouterPlugin 中的 apply() 方法,我來自工程 ${target.name}")}
}
  • 在 buildSrc/main目錄下新建目錄resources/META-INF.gradle-plugins
  • 新建 標識ID.properties 文件

在這里插入圖片描述

com.leon.rt.properties

implementation-class=com.leon.router.gradle.RouterPlugin
  • 在 app 目錄下的 build.gradle,通過標識ID引入我們的插件

在這里插入圖片描述

  • 同步一下,執行命令行"./gradlew clean -q"

在這里插入圖片描述

  • 執行完了之后,我們可以看到自動生成了一個 buildSrc.jar、RouterPlugin.class文件

在這里插入圖片描述

2、實現參數配置

2.1、定義 Extension

  • 在 RouterPlugin.groovy同目錄下創建 RouterExtension.groovy 文件
    在這里插入圖片描述

RouterExtension.groovy

package com.leon.router.gradle//定義 Extension
class RouterExtension {String projectNameString projectPath
}

2.2、注冊 Extension

  • 在 RouterPlugin.groovy 中注冊 RouterExtension.groovy
package com.leon.router.gradleimport org.gradle.api.Plugin
import org.gradle.api.Projectclass RouterPlugin implements Plugin<Project>{//實現apply方法,注入插件邏輯@Overridevoid apply(Project target) {println("我是 RouterPlugin 中的 apply() 方法,我來自工程 ${target.name}")//注冊 Extensiontarget.getExtensions().create("leonEx", RouterExtension)}}
}

2.3、使用 Extension

  • 在 app 目錄下的 build.gradle 使用 注冊的 leonEx

在這里插入圖片描述

2.4、獲取 Extension

  • 在 RouterPlugin.groovy 中獲取用戶設置的 leonEx 參數
package com.leon.router.gradleimport org.gradle.api.Plugin
import org.gradle.api.Projectclass RouterPlugin implements Plugin<Project>{//實現apply方法,注入插件邏輯@Overridevoid apply(Project target) {println("我是 RouterPlugin 中的 apply() 方法,我來自工程 ${target.name}")//注冊 Extensiontarget.getExtensions().create("leonEx", RouterExtension)//獲取 Extensiontarget.afterEvaluate {//當前工程 Gradle 配置階段已結束//到了這一步就可以拿到用戶配置的 leonEx 了RouterExtension extension = target["leonEx"]println("用戶配置------項目名稱:${extension.projectName}    項目路徑: ${extension.projectPath}")}}
}
  • 執行命令行 “./gradlew clean -q”

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/38943.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/38943.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/38943.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

開源網安榮獲第一新聲“2024中國最佳信創安全廠商”,信創實力獲認可

近日&#xff0c;由權威機構【第一新聲】與【天眼查】聯合發起的“2024中國最佳信創廠商系列榜單”評選中&#xff0c;開源網安以其技術創新能力和在信創領域持續投入&#xff0c;成功入選“中國最佳信創安全廠商”。 開源網安&#xff0c;作為軟件安全領域創領者&#xff0c;自…

數據結構 - C/C++ - 棧

目錄 結構特性 結構實現 結構容器 結構設計 順序棧 鏈式棧 結構特性 棧(stack)是線性表的一種形式&#xff0c;限定僅在表的一端進行插入或者刪除的操作。 棧頂 - 表中允許插入、刪除的一端稱為棧頂(top)&#xff0c;棧頂位置是可以發生變化的。 插入 - 進棧、入棧、壓棧…

數據結構預科

在堆區申請兩個長度為32的空間&#xff0c;實現兩個字符串的比較【非庫函數實現】 要求&#xff1a; 1> 定義函數&#xff0c;在對區申請空間&#xff0c;兩個申請&#xff0c;主函數需要調用2次 2> 定義函數&#xff0c;實現字符串的輸入&#xff0c;void input(char …

31 C++11

本節目標 c11簡介列表初始化變量類型推導范圍for循環新增加容器右值新的類功能可變參數模板 1. c11簡介 在2003年標準委員會提交了一份計數勘誤表&#xff08;簡稱TC1&#xff09;&#xff0c;使得c03這個名字已經取代了c98稱為c11之前的最新的c標準名稱。不過由于c03&#x…

JAVA學習筆記DAY12——MySQL基礎

文章目錄 數據庫概述為什么要使用數據庫相關概念關系型和非關系型RDBMS非RDBMS - NoSQL MySQL圖形化管理工具Navicat SQL前后端環境nginx 反向代理MD5加密 數據庫概述 為什么要使用數據庫 持久化&#xff1a;指把數據保存到可掉電存儲設備中&#xff0c;一般指將內存中的數據…

詳解歸一化、標準化、正則化以及batch normalization

文章目錄 what(是什么)where&#xff08;用在哪&#xff09;How&#xff08;如何用&&原理&#xff09;歸一化實現方式原理示例說明 標準化實現方式原理示例說明 正則化實現方式原理作用 Batch Normalizationpytorch中的batch normalization原理BN的作用 歸一化、標準化…

代理設計模式和裝飾器設計模式的區別

代理設計模式: 作用:為目標(原始對象)增加功能(額外功能,拓展功能) 三種經典應用場景: 1&#xff1a;給原始對象增加額外功能(spring添加事務,Mybatis通過代理實現緩存功能等等) 2&#xff1a;遠程代理&#xff08;網絡通信&#xff0c;輸出傳輸&#xff08;RPC&#xff0c;D…

【TB作品】智能臺燈,ATMEGA16單片機,Proteus仿真

智能臺燈 1 adc檢測光強光敏電阻 顯示電壓 2 光強太高 也就是高于臨界值 就關閉小燈 3 光強太低 也就是低于臨界值 就打開小燈 3 按鍵修改臨界值 顯示 實驗報告&#xff1a;基于ATMEGA16單片機的智能臺燈設計與Proteus仿真 1. 實驗背景 智能臺燈是一種能夠根據環境光強自動調…

代碼隨想錄第40天|動態規劃

完全背包 完全背包物品可以無限使用 01背包核心代碼 01背包中的二維dp數組的兩個for遍歷可顛倒, 而一維dp數組的一定先遍歷物品再遍歷背包容量狀態轉移方程(背包容量一定為遞減) 完全背包核心代碼 (只在完全背包中一維dp數組嵌套順序可顛倒, 實際題目需要確定遍歷順序) 狀…

【高考志愿】建筑學

目錄 一、專業介紹 1.1 專業定義 1.2 專業培養目標 1.3 核心課程 二、就業方向和前景 2.1 就業方向 2.2 專業前景 三、報考注意 四、行業趨勢與未來展望 五、建筑學專業排名 一、專業介紹 1.1 專業定義 建筑學&#xff0c;這一充滿藝術與科技魅力的學科&#xff0c;…

天線 有源 無源 參數

無源測試駐波比VSWR/回波損耗(Return Loss)≤2效率≥50%輸入阻抗50R10%增益天線方向圖3D場強圖方向性 有源測試 OTA 傳導測試&#xff1a;發射功率傳導測試&#xff1a;接收靈敏度總輻射功率TRP(Total Radiated Power)≥發射功率減3dB總接收靈敏度TIS&#xff08;Total Isotrop…

JDBC1(JDBC相關類與接口 ?連接mysql數據庫? 測試 不同數據庫廠商實現-MySQL和Oracle)

目錄 一、JDBC 1. JDBC相關類與接口 1.1 DriverManager 1.2 Connection 1.3 Statement 4.ResultSet 2. JDBC工作原理 二、連接mysql數據庫 1. 導入jar包 2. 使用DriverManager加載驅動類 3. Connection接口 4. Statement接口 5. ResultSet接口 ?編輯 6. 關閉并…

顯卡簡介

顯卡是計算機系統中一個重要的組成部分&#xff0c;它負責處理圖形和視頻輸出。顯卡的性能直接影響到計算機的圖形處理能力&#xff0c;因此在游戲、視頻編輯、3D渲染等需要高性能圖形處理的應用中&#xff0c;顯卡的選擇至關重要。本文將從顯卡的基本概念、性能指標、市場現狀…

【Node.JS】入門

文章目錄 Node.js的入門涉及對其基本概念、特點、安裝、以及基本使用方法的了解。以下是對Node.js入門的詳細介紹&#xff1a; 一、Node.js基本概念和特點 定義&#xff1a;Node.js是一個基于Chrome V8引擎的JavaScript運行環境&#xff0c;它使得JavaScript能夠運行在服務器…

【鴻蒙學習筆記】基礎組件Progress:進度條組件

官方文檔&#xff1a;Progress 目錄標題 作用最全屬性迭代追加進度賦值風格樣式 作用 進度條組件 最全屬性迭代追加 Progress({ value: 20, total: 100, type: ProgressType.Linear }).color(Color.Green)// 顏色.width(200)// 大小.height(50)// 高度.value(50)// 進度可更…

視頻轉音頻:怎樣提取視頻中的音頻?6個提取音頻的小技巧(建議收藏)

怎樣提取視頻中的音頻&#xff1f;當我們想從視頻中提取出聲音時&#xff0c;通常會遇到很多問題。無論是想單獨提取出視頻里的音頻&#xff0c;還是把它轉成方便儲存或者分享的音頻格式&#xff0c;這都會涉及到視頻轉音頻的一個需求。因此&#xff0c;在這篇指南里&#xff0…

Spring Cloud - 項目搭建

1、新建maven項目 新建maven項目&#xff0c;該項目為主項目 1、新建maven項目 2、設置項目類型 3、選擇項目原型 4、設置參數 5、等著完成 2、設置項目信息 1、右鍵&#xff0c;項目屬性 2、設置jdk版本 3、選擇jdk17 4、修改編譯版本 5、右鍵項目&#xff0c;選擇maven->u…

【吊打面試官系列-MyBatis面試題】模糊查詢 like 語句該怎么寫?

大家好&#xff0c;我是鋒哥。今天分享關于 【模糊查詢 like 語句該怎么寫?】面試題&#xff0c;希望對大家有幫助&#xff1b; 模糊查詢 like 語句該怎么寫? 第 1 種&#xff1a;在 Java 代碼中添加 sql 通配符。 string wildcardname “%smi%”; list<name> names …

CDH安裝和配置流程

這份文件是一份關于CDH&#xff08;Clouderas Distribution Including Apache Hadoop&#xff09;安裝的詳細手冊&#xff0c;主要內容包括以下幾個部分&#xff1a; 1. **前言**&#xff1a; - CDH是基于Apache Hadoop的發行版&#xff0c;由Cloudera公司開發。 - 相比…

技術派全局異常處理

前言 全局的異常處理是Java后端不可或缺的一部分&#xff0c;可以提高代碼的健壯性和可維護性。 在我們的開發中&#xff0c;總是難免會碰到一些未經處理的異常&#xff0c;假如沒有做全局異常處理&#xff0c;那么我們返回給用戶的信息應該是不友好的&#xff0c;很抽象的&am…