Maven高級之插件開發

前言

終于來到了Maven的插件開發,其實Maven的插件并沒有想象的那么難,剛開始講Maven基礎的時候就演示了一下JDK是如何打包的,Maven打包只是在JDK打包上封裝了一層而已,Maven也支持自定義插件開發

創建

我們先使用quickstart原型創建出一個Maven項目,在pom.xml里面引入一下依賴:

<dependency><groupId>org.apache.maven</groupId><artifactId>maven-plugin-api</artifactId><scope>provided</scope><version>3.0</version>
</dependency>
<dependency><groupId>org.apache.maven.plugin-tools</groupId><artifactId>maven-plugin-annotations</artifactId><version>3.4</version><scope>provided</scope>
</dependency>

添加好依賴后,需修改packaging打包方式:

<packaging>maven-plugin</packaging>

?之前也講過packaging有哪幾種方式,大家可以各自去在下的上篇博客看看

自定義插件

先創建一個類CleanTestPlugin,繼承AbstractMojo,這個抽象類是Maven插件開發需實現的一個類,然后實現里面的execute方法

?然后打包并且安裝到本地倉庫上(命令:mvn clean install

安裝好后,可以在命令行中輸入:

?就能看到打印的日志了。

如果想要在插件中打包時傳入參數,也是可以支持,這里就寫出幾個示例:

?然后在其他項目引入改插件的時候,綁定好參數即可

?由于只綁定了clean的生命周期,所以只需執行mvn clean即可

結語

自定義插件基本結束啦,下篇講講Maven原型(archetype)吧。

是不是看完后,感覺沒啥難的,現在回過頭來看一下Maven自帶的maven-jar-plugin插件,其實沒有想象中那么難,只是結構比較復雜。

看完這個之后,大家也可以去看一下SpringBoot的插件源代碼,這個插件就開發的比較厲害了,如果比較細心的任就會發現,使用這個插件打包出來的可執行包,執行的類并不是執行的類,而是通過SpringBoot同一的啟動類去啟動?。

在自定義插件上,可能大部分人都用不到,如果有興趣的話,可以一起來討論一下。

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

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

相關文章

HTTP1.1新增了五種請求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 、 CONNECT

200 &#xff08;成功&#xff09; 服務器已成功處理了請求。 通常&#xff0c;這表示服務器提供了請求的網頁。 201 &#xff08;已創建&#xff09; 請求成功并且服務器創建了新的資源。 202 &#xff08;已接受&#xff09; 服務器已接受請求&#xff0c;但尚未處…

katalon進行app測試_Katalon API 測試 Demo

為何選擇Katalon符合我們當下的情況&#xff0c;測試需要借助現有工具提高測試效率以及提高測試質量&#xff1b;為何不自己寫代碼&#xff1f;不是只有自己寫的框架才是最好的&#xff0c;合適的才是最好的&#xff1b;katalon 支持ui、mobile、api 同時也支持腳本模式&#x…

Maven高級之archetype(原型/骨架)開發

前言 archetype這個的主要功能就是將寫好的項目模塊打包成一個原型&#xff0c;然后提供給其他人使用&#xff0c;這樣別人就可以快速使用這個項目模板了。 這個東西雖然很多人都基本用不上&#xff0c;但原型這個東西用的好還是很方便的&#xff0c;能夠在開發新項目上省去大…

深度學習在搜索業務中的探索與實踐

本文根據美團高級技術專家翟藝濤在2018 QCon全球軟件開發大會上的演講內容整理而成&#xff0c;內容有修改。引言 2018年12月31日&#xff0c;美團酒店單日入住間夜突破200萬&#xff0c;再次創下行業的新紀錄&#xff0c;而酒店搜索在其中起到了非常重要的作用。本文會首先介紹…

cesium面積計算_cesium-長度測量和面積測量

(更新)多謝網友的提醒&#xff0c;面積測量的小問題已經修改&#xff0c;經測試可正常使用網上找的大神的實現方法有點問題&#xff0c;實現有一些bug&#xff0c;作為cesium新手一個&#xff0c;棄之不忍&#xff0c;只好硬著頭皮修改了&#xff0c;不過還好問題不大&#xff…

SpringBoot自動配置原理流程

前言 新公司太忙了&#xff0c;都沒啥空更新博客&#xff0c;就隨便記錄一下以前的學習筆記吧。SpringBoot是基于Spring上的衍生框架&#xff0c;只要看懂了Spring的話&#xff0c;學這個就比較簡單了&#xff1b;SpringBoot也是在當前微服務時代下流行的框架&#xff0c;并且…

算法:對象方式數組去重

var arr [3, 1, 1, 4 , 2 , 4 , 2 , 4 , 2, 1, 1, 3, 3, 3];var ary[];var obj{};for(var i0;i<arr.length;i){var curarr[i];if(!obj[cur]){obj[cur]cur;ary.push(cur);}}console.log(ary); 復制代碼

python實現路由功能_python 實現重啟路由器

有一些服務&#xff0c;需要動態IP&#xff0c;所以我們用重啟路由器的方法實現。人工重啟不可選&#xff0c;用定時腳本執行即可。貼代碼&#xff0c;每種路由器&#xff0c;提示不一樣。需要路由器有telnet功能才行。#!/usr/bin/env python# -*- coding: utf-8 -*-import tel…

SpringBoot自定義Starter(自動配置類)

前言 SpringBoot其實從誕生以來圍繞的核心就是快速構建項目&#xff0c;快速構建的前提是有人幫你做好輪子&#xff0c;開發者只要拿來即用就好了&#xff0c;而造好輪子的人就是SpringBoot的開發者&#xff0c;引入自動配置的形式幫助開發者快速創建項目&#xff0c;而自動配…

Java并發編程之synchronized關鍵字解析

前言 公司加班太狠了&#xff0c;都沒啥時間充電&#xff0c;這周終于結束了。這次整理了Java并發編程里面的synchronized關鍵字&#xff0c;又稱為隱式鎖&#xff0c;與JUC包中的Lock顯示鎖相對應&#xff1b;這個關鍵字從Java誕生開始就有&#xff0c;稱之為重量級鎖&#xf…

raidrive安裝失敗_記一次RaiDrive映射OneDrive遇到的問題

大概在1周以前&#xff0c;出于需要存放直播錄像的原因&#xff0c;根據別人的視頻教程去自己動手搞了個5T網盤的帳號。(體驗一下&#xff0c;其實我還同時存一份在百度云&#xff0c;怕不穩定)用RaiDrive創建OneDrive的映射&#xff0c;在這步驟點確定后&#xff0c;會彈出微軟…

通過代理模式 + 責任鏈模式實現對目標執行方法攔截和增強功能

前言 最近需要實現一個插件功能&#xff0c;但是如果做成兩個接口的話&#xff08;即執行前和執行后&#xff09;&#xff0c;那么會降低插件的可玩性&#xff0c;所以需做成類似AOP的環繞通知形式&#xff0c;所以就使用到了責任鏈模式和代理模式進行實現。 介紹 代理模式(P…

Javascript基礎之-原型(prototype)

首先呢&#xff0c;prototype是對象里的一個內置屬性&#xff0c;并且呢&#xff0c;這個屬性是對于其他對象的一個引用。所以呢&#xff0c;思考下面的例子&#xff1a; var obj {a: 2 } var myObj Object.create(obj); console.log(myObj.a); // 2 console.log(myObj obj)…

Oracle查詢今天、昨天、本周、上周、本月、上月數據

查詢今天數據&#xff1a; SELECT COUNT(1) FROM T_CALL_RECORDS WHERE TO_CHAR(T_RKSJ,YYYY-MM-DD)TO_CHAR(SYSDATE,YYYY-MM-DD)&#xff1b; 查詢昨天數據&#xff1a; SELECT COUNT(1) FROM T_CALL_RECORDS WHERE TO_CHAR(T_RKSJ,YYYY-MM-DD)TO_CHAR(SYSDATE-1,YYYY-MM-DD)&…

usb一轉多 樹莓派zero_樹莓派 Zero USB/以太網方式連接配置教程

樹莓派 Zero 之所以成為一款非常棒的單板計算機并不全因為它小巧的尺寸和便宜的價格&#xff0c;還得益于它便捷、易用的特性。在加裝了 Zero Quick Plug 或 microUSB/USB 轉換頭之后&#xff0c;將樹莓派 Zero 和電腦連接起來。樹莓派 Zero 即可配置成 USB/以太網設備&#xf…

vscode Go 1.11.4 編譯錯誤 need Delve built by Go 1.11 or later

更新golang的版本為1.11.4之后vscode編譯錯誤&#xff1a;executables built by Go 1.11 or later need Delve built by Go 1.11 or later 原因是delve的版本太老了&#xff0c;需要更新&#xff0c;且delve的github地址已經更換&#xff0c;很多教程里的地址是不對的 新地址安…

oppo的sd卡在哪里打開_oppo的sd卡在哪里打開

大家好&#xff0c;我是時間財富網智能客服時間君&#xff0c;上述問題將由我為大家進行解答。以oppo A91為例&#xff0c;其sd卡可直接在文件管理頁面的存儲里面即可打開。OPPO A91的屏幕為6.4英寸&#xff0c;主屏分辨率2400乘以1080像素&#xff0c;機身顏色有暗夜星辰&…

Navicat使用教程:使用Navicat Query Analyzer優化查詢性能(第1部分)

下載Navicat Monitor最新版本Navicat Monitor 是一套安全、簡單而且無代理的遠程服務器監控工具。它具有強大的功能使你的監控發揮最大效用。受監控的服務器包括 MySQL、MariaDB 和 Percona Server&#xff0c;并與 Amazon RDS、Amazon Aurora、Oracle Cloud、Microsoft Azure …

dg oracle 切換模式_Oracle數據庫 DGbroker三種保護模式的切換

1.三種保護模式– Maximum protection在Maximum protection下&#xff0c; 可以保證從庫和主庫數據完全一樣&#xff0c;做到zero data loss.事務同時在主從兩邊提交完成&#xff0c;才算事務完成。如果從庫宕機或者網絡出現問題&#xff0c;主從庫不能通訊&#xff0c;主庫也立…

軟件包管理

應用程序&#xff1a;程序&#xff1a;Architecture C語言&#xff1a;源代碼-->&#xff08;編譯&#xff09; 二進制格式腳本&#xff1a;解釋器&#xff08;二進制程序&#xff09; 源代碼-->編譯-->鏈接-->運行程序&#xff1a;指令數據指令&#xff1a;芯片CP…