1. Maven的安裝
1.1 首先查看編程工具合適的Maven版本
我使用的是2024/3/1 版本的idea,接下來我會用這個版本的idea進行演示。idea沒有漢化的也可以參考我的步驟。
1、打開idea的設置,搜索Maven,進入Maven設置。
?我們可以看到,idea會推薦我們使用的Maven版本:
2. 下載合適的Maven版本
Maven官網下載鏈接:下載 Apache Maven – Maven
?接下來我們要去Maven的官網上下載相對的版本,不要選錯鏈接了!
?我下載的鏈接是:
apache-maven-3.9.9-bin.zip |
?3. Maven的解壓和配置
解壓到沒有中文和特殊符文的目錄下,然后進入到bin目錄的上一級目錄,即進入有bin目錄的目錄中,然后進入conf目錄中:
?進入setting.xml中:
?在<mirrors>中添加國內的Maven鏡像:
?阿里云Maven鏡像:
<!-- 配置阿里云的Maven鏡像 -->
? ? ? ? ?<mirror>
? ? ? ? ? ? <id>alimaven</id>
? ? ? ? ? ? <name>aliyun maven</name>
? ? ? ? ? ? <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
? ? ? ? ? ? <mirrorOf>central</mirrorOf>
? ? ? ? </mirror>
?華為Maven鏡像:
?<!-- 配置華為的Maven鏡像 -->
? ? ? ? <mirror>
? ? ? ? <id>huaweicloud</id>
? ? ? ? <mirrorOf>*</mirrorOf>
? ? ? ? <url>https://mirrors.huaweicloud.com/repository/maven/</url>
? ? ? ? </mirror>
創建本地Maven倉庫:
?4. 在idea中配置Maven
?接下來就是要讓我們的編寫工具認識下載好的Maven:
設置Maven主路徑:
?
?用戶設置文件:
?
設置Maven的本地倉庫:?
?5. 創建Maven工程
?
注意:一定要等第一步結束后才能執行第二步!!!?
2. Maven的學習?
2.1 Maven的簡介
Maven 是一個項目管理工具,主要用于 Java 項目的構建、依賴管理和項目文檔生成。它可以自動化構建過程,提高開發效率,確保項目的一致性和可重復性。
2.2?Maven的主要功能
1. 依賴管理
- Maven 可以自動下載項目所需的依賴庫,并將其存儲在本地倉庫中。
- 可以方便地管理項目的依賴關系,避免版本沖突。
2. 項目構建
- 定義了標準的項目構建生命周期,包括編譯、測試、打包、部署等階段。
- 可以通過命令行或集成開發環境(IDE)插件來執行構建過程。
3. 多模塊項目管理
- 支持構建多模塊項目,方便管理大型項目的結構。
- 可以輕松地在不同模塊之間共享代碼和資源。
4.?項目文檔生成
- 可以生成項目文檔,如 Javadoc、項目報告等。
這也是我們為什么要學Maven的原因,不同人之間的寫代碼的思路、方式都是不一樣的,Maven可以更好的方便我們管理項目進度實施,還有不同平臺之間也能正常運行。同時簡化一些重復的功能
2.3 Maven構建項目的生命周期、常用命令
1、什么是生命周期
????????在Maven出現之前,項目構建的生命周期就已經存在,軟件開發人員每天都在對項目進行清理,編譯,測試,部署等工作,這個過程就是項目構建的生命周期。雖然大家都在不停的做構建工作,但公司與公司之間,項目與項目之間構建項目的方式有所不同。
????????Maven對所有的構建過程進行了抽象和統一。Maven構建項目的生命周期包含了項目清理,初始化,編譯,測試,打包,集成測試,驗證,部署和站點生成等幾乎所有構建步驟。
比如我們項目中最常用的一套流程,如下圖所示:
Maven的生命周期是抽象的,這意味著生命周期本身不做任何實際工作,在Maven的設計中,實際任務(如代碼編譯)都交給插件來完成。
2、 Maven的三套生命周期
1. clean生命周期
主要用于清理項目構建過程中產生的臨時文件和輸出目錄等,有以下三個階段:
- pre-clean:執行清理前的操作,這個階段一般很少有具體的任務綁定,但可以用于一些準備工作,比如檢查是否有必要進行清理等。
- clean:真正執行清理操作的階段,默認會刪除項目中的 target 目錄及其中的所有內容,也就是清理掉上一次構建生成的所有輸出文件和目錄。
- post-clean:清理操作完成后的階段,可用于執行一些清理后的后續操作,比如記錄清理操作的日志等。
2. default生活周期
這是 Maven 最核心的生命周期,用于項目的編譯、測試、打包、安裝和部署等主要構建任務,包含以下階段:
- validate:驗證項目是否正確,并且所有必要的信息是否可用。例如檢查項目的 POM 文件是否正確解析,必要的依賴是否能找到等。
- initialize:初始化構建,比如設置一些構建屬性,創建一些必要的目錄等。
- generate-sources:生成項目的源代碼,比如通過代碼生成工具根據模板生成一些 Java 代碼等。
- process-sources:處理項目的源代碼,比如過濾一些資源文件中的變量等。
- generate-resources:生成項目需要的資源文件,比如在某些框架中可能會生成配置文件等。
- process-resources:處理資源文件,將資源文件復制到目標目錄等,默認會將 src/main/resources 目錄下的文件復制到 target/classes 目錄。
- compile:編譯項目的源代碼,例如將 Java 源文件編譯成字節碼文件,默認會編譯 src/main/java 目錄下的 Java 文件到 target/classes 目錄。
- process-classes:對編譯后的類文件進行后處理,比如在 Java 項目中可能會進行字節碼增強等操作。
- generate-test-sources:生成測試用的源代碼,比如使用一些測試代碼生成工具生成測試類等。
- process-test-sources:處理測試源代碼,類似于對主源代碼的處理,可能會進行過濾等操作。
- generate-test-resources:生成測試需要的資源文件。
- process-test-resources:處理測試資源文件,將測試資源文件復制到測試目標目錄,默認是 target/test-classes 目錄。
- test-compile:編譯測試源代碼,將測試源文件編譯成字節碼文件,默認編譯 src/test/java 目錄下的文件到 target/test-classes 目錄。
- process-test-classes:對編譯后的測試類文件進行后處理。
- test:使用合適的單元測試框架運行測試,比如 JUnit、TestNG 等,會在編譯后的測試類上執行測試方法。
- prepare-package:在實際打包之前進行一些準備工作,比如對一些文件進行重命名、調整目錄結構等。
- package:將項目打包成可發布的格式,如 JAR、WAR、EAR 等。
- pre-integration-test:在集成測試之前執行的操作,比如啟動一些服務、準備測試環境等。
- integration-test:執行集成測試,測試項目與其他系統或組件的集成情況。
- post-integration-test:集成測試完成后執行的操作,比如清理測試環境、收集測試報告等。
- verify:驗證項目是否滿足質量標準等,比如檢查測試結果是否符合要求、代碼是否滿足代碼規范等。
- install:將項目的包安裝到本地倉庫,以便其他項目可以依賴它。
- deploy:將項目的包部署到遠程倉庫,供其他團隊或項目使用。
其中最重要的過程有:initialize(初始化),compile(編譯源代碼),test(運行測試),package(打包項目),install(安裝項目到本地倉庫)
3. site生命周期
主要用于生成項目的站點文檔,為項目提供文檔支持和展示,有以下階段:
- pre-site:在生成站點前執行一些準備工作,比如檢查站點生成的配置是否正確等。
- site:生成項目的站點文檔,會根據項目中的文檔資源和配置生成 HTML 等格式的文檔頁面,包括項目的介紹、API 文檔、測試報告等內容。
- post-site:在站點生成后執行一些后續工作,比如對生成的站點文件進行優化、壓縮等操作。
- site-deploy:將生成的站點部署到服務器上,以便團隊成員和其他用戶可以通過網絡訪問項目的文檔站點。