maven元件介紹

ikestu小猪發表於2024-08-26

寫在前面

今天我們來學習一下 Maven。簡單來說,Maven 是一種專案管理和構建工具,它的核心原理是透過使用外掛(這些外掛是由 Java 編寫的 JAR 包)來實現的。

Maven 的作用

假設一個公司要開發一個專案,而這個專案又分成多個模組,每個模組又有許多業務需求,需要不同的小組進行開發和整合。這樣的問題是,在快速發展的技術時代裡,每個人可能使用不同版本的 JAR 包和軟體版本。這種版本不一致的問題可能會導致在專案整合時出現各種問題。

Maven 如何解決這些問題

Maven 能夠有效地解決這些問題,其關鍵在於以下幾點:

  1. 中央倉庫
    Maven 提供了一箇中央倉庫,開發者可以從這個中央倉庫中獲取所需的 JAR 包。此外,開發者完成的專案也可以打包成 JAR 包併發布到這個中央倉庫中,供其他模組的開發人員使用。

  2. 統一版本管理
    專案經理或管理員可以使用 Maven 來統一管理所有開發所需的版本,從而最大程度上減少因版本不一致而產生的問題。Maven 的 pom.xml 檔案中定義了專案所需的所有依賴及其版本,這樣可以確保每個開發者都使用相同版本的庫和工具。

Maven

下載

可以去國內映象站中下載 Maven。

安裝

  1. 解壓縮包
    解壓 Maven 壓縮包到指定目錄。

  2. 環境變數配置

    • 新建一個 MAVEN_HOME 環境變數,指向 Maven 解壓目錄。
    • MAVEN_HOME/bin 目錄新增到 PATH 環境變數中。
  3. 驗證安裝
    在命令列中使用 mvn -v 來查詢 Maven 的版本,驗證是否安裝成功。

    參考網站:Maven Repository

基本使用

專案構建

  • 目錄結構

    src                  # 書寫 Java 原始碼
    ├── main              # 書寫 Java 主程式程式碼
    │   ├── java          # 書寫 Java 程式碼
    │   └── resources    # 書寫配置檔案程式碼
    └── test              # 書寫測試程式碼
        ├── java          # 書寫測試 Java 程式碼
        └── resources    # 書寫測試配置檔案程式碼
    pom.xml               # 配置檔案
    target                # 編譯後目錄結構
    
  • 相關操作

    專案構建是一個過程,由以下步驟組成。專案建立是瞬間完成的。

    1. 清理mvn clean
    2. 編譯mvn compile
    3. 測試mvn test
    4. 報告mvn site
    5. 打包mvn package
    6. 安裝mvn install
    7. 部署mvn deploy
  • 生命週期

    Maven 的生命週期按照順序執行各個命令,包含以下三個部分:

    1. Clean LifeCycle:在進行真正的構建之前進行一些清理工作。
    2. Default LifeCycle:構建的核心部分,包括編譯、測試、打包、安裝、部署等。
    3. Site LifeCycle:生成專案報告、站點及釋出站點。

基本設定

pom.xml 配置

  • 座標

    Maven 使用座標來唯一標識一個專案的模組:

    1. groupId:公司或組織的域名倒序 + 當前專案名稱
    2. artifactId:當前專案的模組名稱
    3. version:當前模組的版本
    <groupId>com.shujia</groupId>
    <artifactId>maven-demo</artifactId>
    <version>1.0</version>
    
  • 設定父工程座標

    <parent>
        <artifactId>maven-demo</artifactId>
        <groupId>com.shujia</groupId>
        <version>1.0</version>
    </parent>
    
  • 設定依賴

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
    
  • 依賴的範圍

    依賴的語法:

    • compile(預設值):在 maintest、Tomcat 伺服器下均有效。
    • test:僅在 test 目錄下有效。
    • provided:在 maintest 下有效,Tomcat 伺服器無效。

注意事項

  1. 在一個大型 Maven 專案中,多個子模組會繼承父模組的依賴。如果父模組中有多個不同版本的同一依賴,則使用最後宣告的版本。如果子模組中宣告瞭不同版本的依賴,則以子模組的版本為準。

  2. 如果子模組需要引入其他子模組的依賴,可以直接在 dependency 中新增相關座標。如果引入其他子模組的依賴,匯入的依賴會遵循宣告順序,即前面的模組優先。

  3. 如果想要控制父模組的所有依賴不直接傳遞給子模組,可以使用 dependencyManagement 來管理,子模組需要明確宣告父模組的依賴才能使用。

  4. 對於版本號相同的依賴,可以在 properties 中定義引數,例如 <hadoop.version>3.1</hadoop.version>,使用 ${hadoop.version} 替代版本號,以便統一管理版本號。

Maven 示意圖

在 IDEA 中配置 Maven

  1. 建立 Maven 專案
    在 IntelliJ IDEA 中建立一個 Maven 專案。在設定中配置 Maven 的安裝目錄、依賴包存放位置和 conf 中的 settings.xml 檔案。IDEA 會自動建立並下載必要的依賴包。

  2. 配置完成
    配置完成後,IDEA 會出現 pom.xml 檔案和 Maven 工具欄,可以繼續進行相關配置並正常使用 Maven。

相關文章