Maven 外掛

JIAN2發表於2022-07-26

Maven 外掛

Maven 有以下三個標準的生命週期:

  • clean:專案清理的處理
  • default(或 build):專案部署的處理
  • site:專案站點文件建立的處理

每個生命週期中都包含著一系列的階段(phase)。這些 phase 就相當於 Maven 提供的統一的介面,然後這些 phase 的實現由 Maven 的外掛來完成。

我們在輸入 mvn 命令的時候 比如  mvn clean,clean 對應的就是 Clean 生命週期中的 clean 階段。但是 clean 的具體操作是由  maven-clean-plugin 來實現的。

所以說 Maven 生命週期的每一個階段的具體實現都是由 Maven 外掛實現的。

Maven 實際上是一個依賴外掛執行的框架,每個任務實際上是由外掛完成。Maven 外掛通常被用來:

  • 建立 jar 檔案
  • 建立 war 檔案
  • 編譯程式碼檔案
  • 程式碼單元測試
  • 建立工程文件
  • 建立工程報告

外掛通常提供了一個目標的集合,並且可以使用下面的語法執行:

<code>mvn [plugin-name]:[goal-name]</code>

例如,一個 Java 工程可以使用 maven-compiler-plugin 的 compile-goal 編譯,使用以下命令:

<code>mvn compiler:compile</code>

外掛型別

Maven 提供了下面兩種型別的外掛:

型別 描述
Build plugins 在構建時執行,並在 pom.xml 的 元素中配置。
Reporting plugins 在網站生成過程中執行,並在 pom.xml 的 元素中配置。

下面是一些常用外掛的列表:

外掛 描述
clean 構建之後清理目標檔案。刪除目標目錄。
compiler 編譯 Java 原始檔。
surefile 執行 JUnit 單元測試。建立測試報告。
jar 從當前工程中構建 JAR 檔案。
war 從當前工程中構建 WAR 檔案。
javadoc 為工程生成 Javadoc。
antrun 從構建過程的任意一個階段中執行一個 ant 任務的集合。

例項

我們已經在我們的例子中大量使用了  maven-antrun-plugin 來輸出資料到控制檯上。請檢視   章節。讓我們用一種更好的方式理解這部分內容,在 C:\MVN\project 目錄下建立一個 pom.xml 檔案。

< project xmlns = " "     xmlns:xsi = " "     xsi:schemaLocation = "     " > < modelVersion > 4.0.0 </ modelVersion > < groupId > com.companyname.projectgroup </ groupId > < artifactId > project </ artifactId > < version > 1.0 </ version > < build > < plugins >   < plugin >   < groupId > org.apache.maven.plugins </ groupId >   < artifactId > maven-antrun-plugin </ artifactId >   < version > 1.1 </ version >   < executions >       < execution >         < id > id.clean </ id >         < phase > clean </ phase >         < goals >             < goal > run </ goal >         </ goals >         < configuration >             < tasks >               < echo > clean phase </ echo >             </ tasks >         </ configuration >       </ execution >       </ executions >   </ plugin > </ plugins > </ build > </ project >

接下來,開啟命令終端跳轉到 pom.xml 所在的目錄,並執行下面的 mvn 命令。

mvn clean

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

[INFO] Scanning for projects...[INFO] ------------------------------------------------------------------[INFO] Building Unnamed - com.companyname.projectgroup:project:jar:1.0[INFO]    task-segment: [post-clean][INFO] ------------------------------------------------------------------[INFO] [clean:clean {execution: default-clean}][INFO] [antrun:run {execution: id.clean}][INFO] Executing tasks     [echo] clean phase[INFO] Executed tasks[INFO] ------------------------------------------------------------------[INFO] BUILD SUCCESSFUL[INFO] ------------------------------------------------------------------[INFO] Total time: < 1 second[INFO] Finished at: Sat Jul 07 13:38:59 IST 2012[INFO] Final Memory: 4M/44M[INFO] ------------------------------------------------------------------

上面的例子展示了以下關鍵概念:

  • 外掛是在 pom.xml 中使用 plugins 元素定義的。
  • 每個外掛可以有多個目標。
  • 你可以定義階段,外掛會使用它的 phase 元素開始處理。我們已經使用了  clean 階段。
  • 你可以透過繫結到外掛的目標的方式來配置要執行的任務。我們已經繫結了  echo 任務到 maven-antrun-plugin 的  run 目標。
  • 就是這樣,Maven 將處理剩下的事情。它將下載本地倉庫中獲取不到的外掛,並開始處理。



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70006413/viewspace-2907548/,如需轉載,請註明出處,否則將追究法律責任。

相關文章