日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
教小老弟快速掌握Maven插件

老鐵昨天下午問我什么時候講講Maven插件:

于是老田搞到大半夜終于寫了一篇maven的插件,今天分享給大家。

Maven 是一個執(zhí)行插件的框架,每一個任務(wù)實際上是由插件完成的。那么我們今天就來聊聊Maven插件。

什么是Maven插件?

Maven 實際上只是Maven插件集合的核心框架。換句話說,插件是執(zhí)行大部分實際操作的地方。

插件用于:

  • 創(chuàng)建jar文件,
  • 創(chuàng)建war文件,
  • 編譯代碼,
  • 單元測試代碼,
  • 創(chuàng)建項目文檔等。

插件是Maven的核心功能,它允許在多個項目中重用通用的構(gòu)建邏輯。他們通過在項目描述(項目對象模型(POM))的上下文中執(zhí)行“操作”(即創(chuàng)建WAR文件或編譯單元測試)來實現(xiàn)此目的。可以通過一組唯一的參數(shù)來自定義插件的行為,這些參數(shù)通過每個插件目標(biāo)(或Mojo)的描述公開。

一個插件通常提供了一組目標(biāo),可使用以下語法來執(zhí)行:

 
 
 
 
  1. mvn [plugin-name]:[goal-name] 

例如:一個 Java 項目可以使用 Maven 編譯器插件來編譯目標(biāo),通過運行以下命令編譯

 
 
 
 
  1. mvn compiler:compile 

插件有哪些類型

Maven 提供以下兩種類型插件:

以下是一些常見的插件列表:

例如

我們使用 maven-antrun-plugin 插件在例子中來在控制臺打印數(shù)據(jù)?,F(xiàn)在在 C:\MVN\project 文件夾 創(chuàng)建一個 pom.xml 文件,內(nèi)容如下:

 
 
 
 
  1.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  2.     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
  3.     http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
  4. 4.0.0 
  5. com.companyname.projectgroup 
  6. project 
  7. 1.0 
  8.  
  9.  
  10.     
  11.    org.apache.maven.plugins 
  12.    maven-antrun-plugin 
  13.    1.1 
  14.     
  15.        
  16.          id.clean 
  17.          clean 
  18.           
  19.             run 
  20.           
  21.           
  22.              
  23.                clean phase 
  24.              
  25.           
  26.             
  27.     
  28.     
  29.  
  30.  
  31.  

接下來,打開命令終端跳轉(zhuǎn)到 pom.xml 所在的目錄,并執(zhí)行下面的 mvn 命令。

 
 
 
 
  1. mvn clean 

Maven 將開始處理并顯示 clean 生命周期的 clean 階段。

 
 
 
 
  1. [INFO] Scanning for projects... 
  2. [INFO] ------------------------------------------------------------------ 
  3. [INFO] Building Unnamed - com.companyname.projectgroup:project:jar:1.0 
  4. [INFO]    task-segment: [post-clean] 
  5. [INFO] ------------------------------------------------------------------ 
  6. [INFO] [clean:clean {execution: default-clean}] 
  7. [INFO] [antrun:run {execution: id.clean}] 
  8. [INFO] Executing tasks [echo] clean phase 
  9. [INFO] Executed tasks 
  10. [INFO] ------------------------------------------------------------------ 
  11. [INFO] BUILD SUCCESSFUL 
  12. [INFO] ------------------------------------------------------------------ 
  13. [INFO] Total time: < 1 second 
  14. [INFO] Finished at: Sat Jul 07 13:38:59 IST 2020 
  15. [INFO] Final Memory: 4M/44M 
  16. [INFO] -------- 

上面的例子展示了以下關(guān)鍵概念:

  • 插件是在 pom.xml 中使用 plugins 元素定義的。
  • 每個插件可以有多個目標(biāo)。
  • 你可以定義階段,插件會使用它的 phase 元素開始處理。我們已經(jīng)使用了 clean 階段。
  • 你可以通過綁定到插件的目標(biāo)的方式來配置要執(zhí)行的任務(wù)。我們已經(jīng)綁定了 echo 任務(wù)到 maven-antrun-plugin 的 run 目標(biāo)。
  • 就是這樣,Maven 將處理剩下的事情。它將下載本地倉庫中獲取不到的插件,并開始處理。

插件與目標(biāo)

一個插件通??梢酝瓿啥鄠€任務(wù),每一個任務(wù)就叫做插件的一個目標(biāo)。如執(zhí)行mvn install命令時,調(diào)用的插件和執(zhí)行的插件目標(biāo)如下 :

將插件綁定到生命周期

Maven的生命周期是抽象的,實際需要插件來完成任務(wù),這一過程是通過將插件的目標(biāo)(goal)綁定到生命周期的具體階段(phase)來完成的。如:將maven-compiler-plugin插件的compile目標(biāo)綁定到default生命周期的compile階段,完成項目的源代碼編譯:

內(nèi)置綁定

Maven對一些生命周期的階段(phase)默認綁定了插件目標(biāo),因為不同的項目有jar、war、pom等不同的打包方式,因此對應(yīng)的有不同的綁定關(guān)系,其中針對default生命周期的jar包打包方式的綁定關(guān)系如下:

在第二列中,冒號前面是插件的前綴(prefix),是配置和使用插件的一種簡化方式;冒號后面即是綁定的插件目標(biāo)。

你的倉庫中有哪些maven插件?

 
 
 
 
  1. 存放目錄=%本地倉庫%\org\apache\maven\plugins 

Maven官網(wǎng)上有更詳細的官方插件列表:

自定義插件

在前面我們提到了一個Mojo,Mojo實際上是一個Maven的目標(biāo),插件包含任意數(shù)量的目標(biāo)(Mojos)。Mojos可以定義為帶注釋的java類或Beanshell腳本。Mojo指定有關(guān)目標(biāo)的元數(shù)據(jù):目標(biāo)名稱,它適合生命周期的哪個階段,以及它期望的參數(shù)。

Mojo術(shù)語是在maven2中引入,它是對如何編寫插件的完整重寫。Mojo是對Pojo(plain-old-java-object)的一種改進,它將maven替換為plain。

一個 Mojo 包含一個簡單的 Java 類。插件中多個類似 Mojo 的通用之處可以使用抽象父類來封裝。Maven插件項目的打包方式packaging必須為maven-plugin。

實現(xiàn)自定義插件

創(chuàng)建maven項目,添加依賴:

 
 
 
 
  1.          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
  2.     4.0.0 
  3.     com.tian.maven 
  4.     my-maven-plugin 
  5.     maven-plugin 
  6.     1.0-SNAPSHOT 
  7.     my-maven-plugin 
  8.     http://maven.apache.org 
  9.      
  10.          
  11.             junit 
  12.             junit 
  13.             3.8.1 
  14.             test 
  15.          
  16.          
  17.          
  18.             org.apache.maven 
  19.             maven-plugin-api 
  20.             3.0 
  21.          
  22.  
  23.          
  24.          
  25.             org.apache.maven.plugin-tools 
  26.             maven-plugin-annotations 
  27.             3.4 
  28.             provided 
  29.          
  30.      
  31.  

TianMojo繼承了 AbstractMojo 這個抽象類,并實現(xiàn)了 execute() 方法,該方法就是用來定義這個 Mojo 具體操作內(nèi)容,我們只需要根據(jù)自己的需要來編寫自己的實現(xiàn)即可。

 
 
 
 
  1. //自定義插件類 
  2. //name就是后面使用該插件的時候excuation里面的 
  3. @Mojo(name = "tian") 
  4. public class TianMojo extends AbstractMojo 
  5.     // 配置的是本maven插件的配置,在pom使用configration標(biāo)簽進行配置 property就是名字, 
  6.     // 在配置里面的標(biāo)簽名字。在調(diào)用該插件的時候會看到,還可以設(shè)置默認值 
  7.     @Parameter(property = "userName",defaultValue = "田哥你好") 
  8.     private String userName; 
  9.     @Parameter(property = "pwd",defaultValue = "000000") 
  10.     private String pwd; 
  11.  
  12.     @Override 
  13.     public void execute() throws MojoExecutionException, MojoFailureException { 
  14.         System.out.println("userm=" + userName + " pwd=" + pwd); 
  15.         System.out.println("my plugin is running"); 
  16.     } 

然后在執(zhí)行mvn clean install命令。

使用自定義插件

在我們的maven項目添加我們自定義的插件:

 
 
 
 
  1.  
  2.      
  3.        
  4.         com.tian.maven 
  5.         my-maven-plugin 
  6.         1.0-SNAPSHOT 
  7.          
  8.            
  9.                
  10.             install 
  11.              
  12.                
  13.               tian 
  14.              
  15.            
  16.          
  17.          
  18.          
  19.           田維常 
  20.           123456 
  21.          
  22.        
  23.      
  24.  

然后就可以在我們的IDEA中看到:

雙擊my:tian:

還可以使用命令的方式:mvn my:tian

my是前綴,是my-maven的縮寫。后綴tian就是插件綁定的目標(biāo)。

到此,我們的自定義Maven插件就搞定了。

總結(jié)

Maven插件是Maven的核心功能,插件類型有構(gòu)建類型和報告類型,插件可以有多個目標(biāo)也就是可以理解為多個功能。自定義插件主要兩步:依賴相關(guān)jar包和重寫Mojo。自定義的插件的使用和我們用其他插件使用一樣,只要在pom中配置相關(guān) 配置即可。

只有真正理解了插件實現(xiàn)原理后,才能慢慢去體會猜測我們平時使用的那些mvn...命令背后是如何實現(xiàn)的。

本文轉(zhuǎn)載自微信公眾號「Java后端技術(shù)全?!梗梢酝ㄟ^以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系Java后端技術(shù)全棧公眾號。


名稱欄目:教小老弟快速掌握Maven插件
文章轉(zhuǎn)載:http://www.5511xx.com/article/cdhcpii.html