iT邦幫忙

2025 iThome 鐵人賽

DAY 5
1
Software Development

spring boot 3 學習筆記系列 第 5

Day05 - Spring Boot Maven 簡介

  • 分享至 

  • xImage
  •  

前言

在前面的討論中,我們已經介紹了如何使用 Spring Initializr 建立 Spring Boot 3 專案。接下來,我們要更深入了解 Maven,這是 Spring Boot 預設支援的建構工具(Build Tool)。

Maven 簡介

Maven 是一款專為 Java 生態系統設計的建構工具,負責:

  • 專案管理(Project Management)
  • 依賴管理(Dependency Management)
  • 建構流程(Build Lifecycle)

Spring Boot 預設支援 Maven,讓開發者能夠輕鬆管理應用程式的相依性。

簡單比喻
可以把 Maven 想像成是一位「專案管理員(Project Manager)」

  • 他會幫你準備好專案所需的工具 (依賴 Dependencies)。
  • 他會安排工作流程 (建構流程 Build Lifecycle)。
  • 他會確保所有工具版本相容,不會打架 (依賴管理 Dependency Management)。

就像煮菜時有「廚房」、「冰箱」、「試吃員」:

  • 程式碼(Code) = 廚房裡的料理過程。
  • 設定檔(Configuration) = 冰箱裡的食材。
  • 測試(Unit Test) = 試吃員檢查料理品質。

有了 Maven,你就不需要自己一個一個去下載 .jar 套件、放到 lib 資料夾,所有事情 Maven 都會自動完成。

Maven 專案結構

以下是典型的 Spring Boot Maven 專案結構:

|   .gitattributes
|   .gitignore
|   HELP.md
|   mvnw
|   mvnw.cmd
|   pom.xml
|   
+---.mvn
|   \---wrapper
|           maven-wrapper.properties
|           
\---src
    +---main
    |   +---java
    |   |   \---com
    |   |       \---example
    |   |           \---demo
    |   |                   DemoApplication.java
    |   |                   
    |   \---resources
    |           application.properties
    |           
    \---test
        \---java
            \---com
                \---example
                    \---demo
                            DemoApplicationTests.java

目錄與檔案說明

  1. 根目錄

    • .gitattributes:定義 Git 版本控制屬性,設置行尾格式、檔案編碼等。
    • .gitignore:告訴 Git 哪些檔案與目錄需要忽略,通常包括編譯生成的 target/ 和 IDE 設定檔 .idea/ 等。
    • HELP.md:由 Spring Initializr 生成,提供專案簡介與使用指引。
    • mvnw / mvnw.cmd:Maven Wrapper 執行腳本,就像「隨身攜帶的工具箱」,即使開發者在沒有安裝 Maven 的環境中,也能執行 mvn 命令。
    • pom.xml:Maven 的專案描述檔(Project Object Model, POM),就像「專案的藍圖」,裡面記錄依賴與規則。。
  2. .mvn/wrapper 目錄

    • maven-wrapper.properties:記錄 Maven Wrapper 所使用的 Maven 版本,就像「工具箱裡的標籤」。
  3. src/main/java 目錄

    • 放主要的應用程式程式碼,就像「廚房」裡的料理過程。
    • com.example.demo.DemoApplication.java:這是 Spring Boot 應用程式的主類別,包含 @SpringBootApplication 註解(Annotation),內有 main 方法用於啟動 Spring Boot 應用程式。
  4. src/main/resources 目錄

    • 放設定檔與資源,例如 application.properties,就像「冰箱」裡的原料。
    • application.properties:Spring Boot 設定檔,可配置應用程式的行為,用來配置伺服器端口、資料庫連線等設定。
  5. src/test/java 目錄

    • 放測試程式碼,就像「試吃員」幫忙檢查料理品質。
    • com.example.demo.DemoApplicationTests.java:這是 Spring Boot 產生的單元測試(Unit Test)類別,通常使用 @SpringBootTest 註解(Annotation),模擬應用程式環境進行測試。

這個專案結構是 Spring Boot 預設的標準架構,適合用於快速開發 REST API 或完整的 Web 應用程式。

.m2 資料夾的用途

當您在 Windows 系統上使用 Maven 時,可能會注意到一個位於 C:\Users\<使用者名稱>\.m2 的資料夾。這個資料夾在 Maven 的運作中扮演著關鍵角色,就像你家裡的「冰箱」。

.m2 資料夾是 Maven 的本地儲存庫(Local Repository),用來儲存您專案所需的所有相依(Dependencies)和外掛(Plugins)。當您在專案的 pom.xml 檔案中需要新的依賴 (Dependencies)時,Maven 會自動從中央儲存庫(Maven Central Repository)下載所需的套件,然後儲存到 .m2/repository 資料夾中。這樣,當前或未來的專案需要相同的套件時,Maven 可以直接從本地儲存庫(Local Repository)中取得,無需再次下載。

.m2 資料夾的結構

.m2 資料夾中,最重要的子資料夾是 repository,它包含了所有下載的相依(Dependencies)和外掛(Plugins)。此外,您可能會看到一個名為 settings.xml 的檔案,這是 Maven 的使用者級別設定檔,允許您自訂 Maven 的行為,例如:變更本地儲存庫(Repository)的位置、設定代理伺服器(Proxy)、定義鏡像(Mirror)等。

以下為 Windows 系統的典型路徑為:

C:\Users\<使用者名稱>\.m2
├── repository/      # 存放所有下載的依賴套件
└── settings.xml     # 全域性設定檔
  1. 本地依賴儲存庫
    .m2/repository 是 Maven 存放所有下載依賴套件(如 .jar 檔案)的預設路徑。首次編譯專案時,Maven 會從中央儲存庫 (Maven Central Repository)下載套件至此目錄,後續其他專案即可直接從 .m2/repository 複用,不用再下載。

  2. 系統層級設定檔
    settings.xml 檔案通常位於 .m2 目錄下,用於定義全域設定檔 (Global Settings File),包括:

    • 可以設定代理伺服器 (Proxy)。
    • 可以設定套件來源 (遠端儲存庫 Remote Repository)。
    • 可以設定鏡像站台 (Mirror)。
    • 自訂本地路徑 <localRepository>

管理注意事項

  • 清理儲存庫:可直接刪除 .m2/repository 內容以釋放空間,Maven 會在下次編譯時重新下載必要依賴。
  • 自訂路徑:可透過修改 settings.xml<localRepository> 標籤變更預設儲存庫位置。
  • 多環境衝突:若遇到依賴下載異常,需檢查 .m2 目錄下的設定檔(settings.xml)是否與專案 POM 檔案(pom.xml)配置衝突。

如何建立 .m2 資料夾

通常,當您首次執行 Maven 命令時,Maven 會自動在您的使用者目錄下建立 .m2 資料夾。如果您發現該資料夾不存在,可以手動執行以下步驟:

  1. 確認 Maven 已安裝並設定正確:在命令提示字元中輸入 mvn -v,檢查 Maven 的版本資訊。如果未顯示版本資訊,請確保已正確安裝並設定環境變數。

  2. 執行 Maven 命令以初始化 .m2 資料夾:在命令提示字元中輸入 mvn help:system。此命令會讓 Maven 執行一次任務,過程中會自動在使用者目錄下建立 .m2 資料夾。

相關資料來源


上一篇
Day04 - 快速建立第一個簡單的 Spring Boot 3 應用程式
下一篇
Day06 - Spring Boot Gradle 簡介
系列文
spring boot 3 學習筆記17
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言