CodeGym /Java Blog /Toto sisi /第 4 部分 Maven 的基礎知識
John Squirrels
等級 41
San Francisco

第 4 部分 Maven 的基礎知識

在 Toto sisi 群組發布
本資料是“企業發展概論”系列的一部分。往期文章: 第 4 部分 Maven 的基礎 - 1Maven是一個管理和構建項目的工具——Java 程序員的得力助手。它使開發人員在工作的每個階段都更加輕鬆:從創建項目結構和連接必要的庫到在服務器上部署產品。在使用任何框架時,您都必須使用 Maven。那麼,今天就讓我們來看看它的主要功能,看看如何使用吧。

Maven的逐步安裝

  1. 首先,我們需要安裝 Maven。從此鏈接下載它。

  2. 接下來,解壓縮下載的存檔並將 M2_HOME 環境變量設置為解壓縮存檔的位置。例如 C:\\Program Files\\maven\\

  3. 為確保已安裝所有內容,請在命令行上執行以下命令:

    mvn-版本

  4. 如果顯示了Maven、Java等的版本信息,那麼就萬事大吉了。

  5. 現在打開 IntelliJ IDEA 並創建一個新項目。在第一個窗口中,選擇 Maven:

    第 4 部分 Maven 的基礎 - 2
  6. 單擊“下一步”並填寫出現的窗口:

    第 4 部分 Maven 的基礎知識 - 3
  7. 然後,像往常一樣,在任何你想要的地方創建一個項目。

    創建項目後,請注意其結構:

    第 4 部分 Maven 的基礎知識 - 4
這是Maven 項目的標準結構
  • src /main/java文件夾包含 Java 類
  • src /main/resources文件夾包含應用程序使用的資源(HTML 頁面、圖像、樣式表等)
  • src /test文件夾用於測試
還要注意名為pom.xml的文件。這是管理 Maven 的主要文件。整個項目描述都包含在這裡。目前沒有太多信息,但我們現在將添加它。

在 Maven 中管理依賴項

您可能遇到過“依賴管理器”這個短語。Maven 知道如何管理依賴關係。感謝 Maven,您不必花費大量時間在 Internet 上搜索所需的庫,下載它,然後將它連接到您的項目。相反,您只需將所需的庫添加到 Maven 的依賴項列表中。

依賴項在 pom.xml 文件的 dependencies 節點中指定

假設您的項目中需要 Apache Commons IO 庫以簡化文件處理。要添加庫,我們在 pom.xml 中寫五行:

<dependency>
   <groupId>commons-io</groupId>
   <artifactId>commons-io</artifactId>
   <version>2.6</version>
</dependency>
現在你的 pom.xml 文件應該是這樣的:

  <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>

   <groupId>example.com</groupId>
   <artifactId>example</artifactId>
   <version>1.0-SNAPSHOT</version>

   <dependencies>
       <dependency>
           <groupId>commons-io</groupId>
           <artifactId>commons-io</artifactId>
           <version>2.6</version>
       </dependency>
   </dependencies>
</project>
之後,允許 IntelliJ IDEA 導入依賴項(右下角會出現一個對話框)。現在庫可以使用了:

import org.apache.commons.io.FileUtils;

import java.io.File;

public class TestMaven {
   public static void main(String[] args) {
       File tempDirectory = FileUtils.getTempDirectory();
   }
}
所有後續的依賴也必須寫在<dependencies>標籤內。您可能想知道如何找到您需要在標籤內指明的庫的信息<dependency>。這很容易。始終需要設置三個參數:“groupId”、“artifactId”和“version”。有兩種方法可以確定這些參數:
  1. 在圖書館的網站上。如果我們需要 Apache Commons IO 庫,我們去官方網站並選擇“依賴信息”選項卡。所有必要的信息都在這裡——您可以簡單地複制它並將其添加到節點<dependencies>

  2. Maven 存儲庫中。在搜索欄中輸入“apache commons io”,您將看到該庫的所有可用版本。選擇正確的後,只需複制以下內容:

    
    <dependency>
               <groupId>commons-io</groupId>
               <artifactId>commons-io</artifactId>
               <version>2.6</version>
           </dependency>
    

    並將其添加到您的 pom.xml 中。

Maven 存儲庫的類型

值得我們再次提及 Maven 存儲庫,因為我們實際上有兩個:一個遠程(中央)存儲庫和一個本地(在您的計算機上)存儲庫。您添加到項目中的所有庫都保存在本地存儲庫中。Maven 在向項目添加所需的依賴時,首先檢查該庫是否已存在於本地存儲庫中。只有在本地找不到庫時,它才會訪問遠程存儲庫。如您所見,您可以使用 Maven 添加依賴項,但這並不是它所能做的全部。

使用 Maven 構建 Java 項目

對於初學者來說,此功能似乎毫無意義。如果我們有 IDE,為什麼還需要這個?讓我解釋。首先,您必須在其中構建應用程序的服務器可能既沒有開發環境也沒有圖形界面。其次,在大型項目中,Maven 可以更好地構建項目。因此,事不宜遲,我們將考慮使用 Maven 構建應用程序的過程。

階段

構建應用程序的過程稱為 Maven 項目的生命週期,它由多個階段組成。你可以在IDEA中點擊右上角的Maven > example > Lifecycle 查看它們: 第 4 部分 Maven 的基礎知識 - 5可以看到,有9個階段:
  1. clean——從目標目錄(保存完成的工件的地方)中刪除所有編譯文件
  2. 驗證——檢查構建項目所需的所有信息是否存在
  3. compile — 編譯源代碼文件
  4. 測試——開始測試
  5. package — 打包編譯文件(在 JAR、WAR 等存檔中)
  6. verify — 檢查打包文件是否準備就緒
  7. install — 將包放在本地存儲庫中。現在它可以被其他項目用作外部庫
  8. 站點——創建項目文檔
  9. deploy — 將構建的存檔複製到遠程存儲庫
所有階段都按順序執行:例如,在第 1-3 階段完成之前,第四階段無法開始。有兩種方法可以開始一個階段:
  • 通過命令行:

    mvn包

    第 4 部分 Maven 的基礎知識 - 6
  • 使用 IntelliJ IDEA:

    第 4 部分 Maven 的基礎知識 - 7

    在打包階段開始之前,執行驗證、編譯和測試階段。清潔階段是一個例外。在每次構建項目之前運行此階段是個好主意。您可以列出多個階段,用空格分隔它們:

    mvn 乾淨的包。

此外,每個階段都有前階段和後階段:例如部署前、部署後、清理前、清理後等,但很少使用。此外,每個階段都有目標。默認設置標準目標。Maven 插件添加了額外的目標。有時在一個階段中,您可能需要執行其他功能。為此有 Maven 插件。可以在Maven 網站上找到官方插件列表。但是您應該知道,可以在第三方網站上找到許多自定義插件。當然,如果出現一些特殊需求,您始終可以自己編寫自定義插件

插件

要將 Maven 插件添加到項目中,我們需要將其描述添加到 pom.xml 文件中,使用<build><plugins>標記,類似於我們添加依賴項的方式。例如,假設我們需要一個插件來驗證我們使用的是所有外部庫的最新版本。在互聯網上稍作搜索後,您可以找到該插件及其使用說明。讓我們設置 groupId、artifactId 和版本。我們將指出插件必須實現的目標以及在什麼階段。在我們的例子中,當前 pom.xml 中的依賴項檢查設置為在驗證階段發生。現在我們的 pom.xml 文件看起來像這樣:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>

   <groupId>example.com</groupId>
   <artifactId>example</artifactId>
   <version>1.0-SNAPSHOT</version>

   <build>
       <plugins>
           <plugin>
               <groupId>com.soebes.maven.plugins</groupId>
               <artifactId>uptodate-maven-plugin</artifactId>
               <version>0.2.0</version>
               <executions>
                   <execution>
                       <goals>
                           <goal>dependency</goal>
                       </goals>
                       <phase>validate</phase>
                   </execution>
               </executions>
           </plugin>
       </plugins>
   </build>

   <dependencies>
       <dependency>
           <groupId>commons-io</groupId>
           <artifactId>commons-io</artifactId>
           <version>2.6</version>
       </dependency>
   </dependencies>
</project>
我們可以繼續我們的項目。但是讓我們嘗試將 Apache Commons IO 的版本更改為 2.0 並構建項目。我們會得到

[ERROR] Failed to execute goal com.soebes.maven.plugins:uptodate-maven-plugin:0.2.0:dependency (default) on project example: There is a more up-to-date version ( 2.6 ) of the dependency commons-io:commons-io:2.0 available. -> [Help 1]
這裡我們有一個由插件生成的構建錯誤。錯誤消息指出,當 2.6 版可用時,我們正在使用 2.0 版。基本上,Maven 是一個非常有用的工具。也許一開始看起來很難使用,但要練習!使用 Maven 創建您的項目,一段時間後您會對最終結果感到非常滿意。本文故意省略了很多有關 Maven 的細節——我們專注於最重要的部分。但改進是無止境的:您可以在其官方網站上閱讀有關 Maven 的更多信息。 第 5 部分。Servlet 和 Java Servlet API。編寫一個簡單的 Web 應用程序 第 6 部分。Servlet 容器 第 7 部分。介紹 MVC(模型-視圖-控制器)模式
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION