開發Maven插件

来源:http://www.cnblogs.com/bigshark/archive/2017/12/03/7955998.html
-Advertisement-
Play Games

Mojo: Maven plain Old Java Object 1、插件命名規則:maven-<yourplugin>-plugin是Maven的保留欄位,不允許使用,我們可以用<myplugin>-maven-plugin來命名自己開發的插件。 2、自定義插件代碼,註意pom文件的packag ...


 

  Mojo: Maven plain Old Java Object

1、插件命名規則:maven-<yourplugin>-plugin是Maven的保留欄位,不允許使用,我們可以用<myplugin>-maven-plugin來命名自己開發的插件。

2、自定義插件代碼,註意pom文件的packaging類型是maven-plugin,否則無法識別為插件類型。

 1 import org.apache.maven.plugin.AbstractMojo;
 2 import org.apache.maven.plugin.MojoExecutionException;
 3 import org.apache.maven.plugins.annotations.Mojo;
 4 import org.apache.maven.plugins.annotations.Parameter;
 5 
 6 /**
 7  * 支持的命令:
 8  * mvn com.sample.myplugin:hello-maven-plugin:1.0-SNAPSHOT:sayhi 
 9  * 預設輸出Hello World!
10  * 當配置了<greeting>Welcome</greeting>,輸出Welcome
11  * mvn com.sample.myplugin:hello-maven-plugin:1.0-SNAPSHOT:sayhi -Dsayhi.greeting=hello
12  * 未配置<greeting>Welcome</greeting>時輸出hello
13  */
14 @Mojo(name = "sayhi")
15 public class GreetingMojo extends AbstractMojo {
16 
17     // 參數,可以用參數表達式${project.version}
18     // 不同的參數類型的pom配置也不同
19     @Parameter(property = "sayhi.greeting", defaultValue = "Hello World!")
20     private String greeting;
21 
22     @Override
23     public void execute() throws
24             MojoExecutionException {
25         getLog().info(greeting);
26     }
27 }
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <project xmlns="http://maven.apache.org/POM/4.0.0"
 3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 5     <modelVersion>4.0.0</modelVersion>
 6 
 7     <groupId>com.sample.myplugin</groupId>
 8     <artifactId>hello-maven-plugin</artifactId>
 9     <version>1.0-SNAPSHOT</version>
10     <packaging>maven-plugin</packaging>
11 
19     <dependencies>
20         <dependency>
21             <groupId>org.apache.maven</groupId>
22             <artifactId>maven-plugin-api</artifactId>
23             <version>3.0</version>
24         </dependency>
25 
26         <!-- @Mojo註解的依賴包 -->
27         <dependency>
28             <groupId>org.apache.maven.plugin-tools</groupId>
29             <artifactId>maven-plugin-annotations</artifactId>
30             <version>3.4</version>
31             <scope>provided</scope>
32         </dependency>
33     </dependencies>
34 
35     <build>
36         <plugins>
37             <plugin>
38                 <!-- 使用自定義插件-->
39                 <groupId>com.sample.myplugin</groupId>
40                 <artifactId>hello-maven-plugin</artifactId>
41                 <version>1.0-SNAPSHOT</version>
42                 <configuration>
43                     <!-- greeting 是 @Parameter註解的參數-->
44                     <greeting>Welcome</greeting>
45                 </configuration>
46             </plugin>
47         </plugins>
48     </build>
49 </project>

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • jquery.qqFace.js使用方法 引用 <script src="~/Content/qqFace/js/jquery.qqFace.js?v=3"></script> <script src="~/Content/qqFace/js/jquery-browser.js"></script> ...
  • 上篇文章介紹了ASP.NET中身份驗證的機制與流程,本文將使用代碼的來介紹如何實現第三方賬戶驗證與雙因數驗證。 本章主要內容有: ● 實現基於微軟賬戶的第三方身份驗證 ● 實現雙因數身份驗證 ● 驗證碼機制 實現基於微軟賬戶的第三方身份驗證 在微軟提供的ASP.NET MVC模板代碼中,預設添加了微 ...
  • TreeView控制項顯示的內容比較單一,如果需要呈現更多的詳細信息TreeListView是一個不錯的選擇。因此你可以將一個XMl文檔完整的呈現到該控制項中去! ...
  • 總結:資料庫中某張表有問題,導致查詢速度奇慢! 問題排查過程: 1. 視圖問題 ? 2、sql語句問題? 3、沒有建立必須的索引? 後來: 整個sql語句分段調試,發現加入某張表後就變的非常卡! 將該表信息導入新表,刪除該表,使用新表就不卡了! 數據表竟然有問題!!! 頭一次遇到這種稀奇問題,我這個 ...
  • #log4j.rootLogger=Debug,consolelog4j.rootLogger=info,console#控制台輸出 log4j.appender.console=org.apache.log4j.ConsoleAppenderlog4j.appender.console.layou ...
  • 設想從一大群選手中挑選人員組建一支隊伍,每名選手都擁有特定的技能組合。目標是組建出一隻最小的隊伍,使得隊伍整體擁有一組特定的技能組合。也就是說,對於隊伍整體所需要的技能,隊伍中至少有一名選手必須擁有這項技能。假定S為隊伍所必須擁有的技能集合,P為所有待選選手的技能集合。從P中挑選出一些技能組合以構成... ...
  • 看見頭文件中的條件編譯就犯怵,不知什麼意思,但是,師傅說:”就得那麼寫“,我照做,但是知其然而不知其所以然。 好吧,我承認自己只是一個代碼的搬運工,哦,不,或許還談不上。 下麵是學習後自己的理解~~~ 代碼: 也許我渣把,總之,之前我確實不會。 解釋: 第1、2行和第14行:防止重覆定義。 如果兩個 ...
  • import time# print(help(time)) # 顯示time模塊全文本# Functions: # 執行結果 # time() -- return current time in seconds since the Epoch as a float # 以浮點數返回以秒計算的從19 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...