SpringBoot左腳進(jìn)門之Maven管理家具體步驟
一、概念
Maven 是一個項目管理和整合工具。通過對 目錄結(jié)構(gòu)和構(gòu)建生命周期 的標(biāo)準(zhǔn)化, 使開發(fā)團(tuán)隊用極少的時間就能夠自動完成工程的基礎(chǔ)構(gòu)建配置。
Maven 簡化了工程的構(gòu)建過程,并對其標(biāo)準(zhǔn)化,提高了重用性。
Maven 本地倉庫 (Local Repository):
- 每個開發(fā)者的計算機(jī)上都有一個本地倉庫,用于存儲下載的依賴庫。
- 本地倉庫通常位于用戶的 ~/.m2/repository 目錄下(在 Windows 上通常是 C:\Users<username>.m2\repository)。
Nexus 私服 (Private Repository):
- Nexus 是一個流行的倉庫管理工具,用于托管私有倉庫。
- 私有倉庫可以存儲企業(yè)內(nèi)部的庫,也可以作為中央倉庫的緩存,提高下載速度。
- 開發(fā)者通過 HTTP 訪問 Nexus 私服,下載所需的依賴庫。
Maven 中央倉庫 (Central Repository):
- Maven 中央倉庫是公共的、開源的庫倉庫,包含了大量開源項目的庫。
- 開發(fā)者可以通過 HTTP 訪問 Maven 中央倉庫,下載開源庫。
工作流程:
開發(fā)者的 Maven 項目:
- 開發(fā)者在本地計算機(jī)上使用 Maven 管理項目。
- Maven 項目通過 pom.xml 文件定義依賴關(guān)系。
依賴查找:
- 當(dāng) Maven 需要下載一個依賴庫時,它首先檢查本地倉庫。
- 如果本地倉庫中沒有該庫,則 Maven 會嘗試從 Nexus 私服下載。
- 如果 Nexus 私服中也沒有該庫,則 Maven 會從 Maven 中央倉庫下載,并將該庫緩存到本地倉庫和 Nexus 私服中。
配置文件:
- settings.xml 文件用于配置 Maven 的全局設(shè)置,包括鏡像、服務(wù)器認(rèn)證信息等。
- pom.xml 文件用于定義項目的構(gòu)建配置和依賴關(guān)系。
具體步驟:
- 本地倉庫檢查:
- Maven 首先檢查本地倉庫是否有所需的依賴庫。
- Nexus 私服檢查:
- 如果本地倉庫中沒有,Maven 會嘗試從 Nexus 私服下載。
- Maven 中央倉庫檢查:
- 如果 Nexus 私服中也沒有,Maven 會從 Maven 中央倉庫下載,并將該庫緩存到本地倉庫和 Nexus 私服中。
二、Maven目錄結(jié)構(gòu)
根目錄:工程名 |---src://源碼 |---|---main: //存放主程序 |---|---|---java: //源碼文件 |---|---|---resources: //存放框架的資源文件 |---|---test://存放測試程序 |---|---|---java: //java測試文件 |---|---|---resources: //java測試的資源文件 |---pom.xml://maven的核心配置文件
<project ...> <modelVersion>4.0.0</modelVersion> <groupId>com.itranswarp.learnjava</groupId> <artifactId>hello</artifactId> <version>1.0</version> <packaging>jar</packaging> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.release>17</maven.compiler.release> </properties> <dependencies> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>2.0.16</version> </dependency> </dependencies> </project>
三、倉庫
Maven 倉庫有兩種類型:
- 本地倉庫(local):自己電腦上存儲資源的倉庫,通過連接遠(yuǎn)程倉庫獲取資源
- 遠(yuǎn)程倉庫(remote):非自己電腦上的倉庫,為本地倉庫提供資源
- 中央倉庫:Maven團(tuán)隊維護(hù),存儲所有資源的倉庫
- 私服:公司范圍內(nèi)存儲資源的倉庫,從中央倉庫獲取資源或自己的資源,僅對內(nèi)部開放,不對外共享
本地倉庫:
本地倉庫說明:
Maven 本地倉庫是機(jī)器上的一個文件夾,它在你第一次運(yùn)行任何 maven 命令的時候創(chuàng)建。
Maven 本地倉庫保存你的工程的所有依賴。當(dāng)你運(yùn)行一次 Maven 構(gòu)建命令,Maven 會自動下載所有依賴的 jar 文件到本地倉庫中。它避免了每次構(gòu)建時都引用存放在遠(yuǎn)程機(jī)器上的依賴文件。
本地倉庫存放位置
本地倉庫默認(rèn)被創(chuàng)建在 C:\Users\用戶名.m2\ 目錄下。要修改默認(rèn)位置,在 %M2_HOME%\conf 目錄中的 settings.xml 文件中定義另一個路徑。
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <localRepository>${user.home}/.m2/repository</localRepository> </settings>
中央倉庫:
Maven 中央倉庫是由 Maven 社區(qū)提供的倉庫。
//設(shè)置成功后,會從阿里的鏡像庫中獲取依賴,不會從 Maven 中央倉庫中獲取依賴了。 <!--添加如下配置:設(shè)置阿里鏡像庫--> <mirror> <id>ali</id> <name>ali Maven</name> <mirrorOf>*</mirrorOf> <url>https://maven.aliyun.com/repository/public/</url> </mirror>
私服:
私服是一種在公司內(nèi)部或局域網(wǎng)中使用的遠(yuǎn)程倉庫。它通常由公司自己搭建,用于存儲公司內(nèi)部開發(fā)的庫和插件,也可以從中央倉庫或其他遠(yuǎn)程倉庫獲取依賴。私服可以加快公司內(nèi)部項目的構(gòu)建速度,同時也可以避免外部網(wǎng)絡(luò)不穩(wěn)定對項目構(gòu)建的影響。
四、坐標(biāo)和依賴
<dependency> <!--工程組的標(biāo)識,它在一個組織或者項目中通常是唯一的,公司或域名倒序+項目名--> <groupId>mysql</groupId> <!--工程的名稱,模塊名--> <artifactId>mysql-connector-java</artifactId> <!--工程的版本號--> <version>8.0.31</version> </dependency> groupId: 這是工程組的標(biāo)識。它在一個組織或者項目中通常是唯一的。例如,一個銀行組織 com.company.bank 擁有所有的和銀行相關(guān)的項目。 artifactId: 這是工程的標(biāo)識。它通常是工程的名稱。例如,消費(fèi)者銀行。groupId 和 artifactId 一起定義了 artifact 在倉庫中的位置。 version: 這是工程的版本號。在 artifact 的倉庫中,它用來區(qū)分不同的版本。例如: com.company.bank:consumer-banking:1.0 com.company.bank:consumer-banking:1.1
<dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.31</version> <!--scope標(biāo)簽代表指定依賴范圍--> <scope>runtime</scope> </dependency> </dependencies> compile: 默認(rèn)值,適用于所有階段(開發(fā)、測試、部署、運(yùn)行),本jar會一直存在所有階段; runtime: 只在運(yùn)行時使用,如JDBC驅(qū)動,適用運(yùn)行和測試階段; test: 只在測試時使用,用于編譯和運(yùn)行測試代碼,不會隨項目發(fā)布; provided: 只在開發(fā)、測試階段使用。
五、Maven生命周期命令
命令 | 作用 |
---|---|
mvn compile | 編譯主程序 src/main ,生成target目錄,存放編譯主程序生成的字節(jié)碼文件,輸出到 target/classes |
mvn test-compile | 編譯測試程序 src/main ,生成target目錄,存放編譯主程序生成的字節(jié)碼文件,輸出到 target/classes |
mvn test | 編寫的測試代碼并生成測試報告(目前對于后端開發(fā)沒有太大作用) |
mvn package | 將項目打成jar包 |
mvn clean | 清空項目本地編譯目錄 |
mvn install | 將項目 安裝到本地倉庫(多個項目相互依賴 相互使用時.) |
這是最常用的生命周期,用于編譯、測試、打包和部署項目。它的典型階段包括:
- validate:驗證項目的正確性以及所有必要的信息是否可用。
- compile:編譯項目的源代碼。
- test:使用合適的單元測試框架(如 JUnit)運(yùn)行測試,但不包含生成的測試代碼。
- package:將編譯后的代碼打包成可分發(fā)格式,如 JAR 或 WAR 文件。
- verify:對集成測試的結(jié)果進(jìn)行檢查,確保質(zhì)量標(biāo)準(zhǔn)得到滿足。
- install:將包安裝到本地倉庫,以便其他本地項目可以依賴它。
- deploy:在集成或發(fā)布環(huán)境中完成,將最終的包復(fù)制到遠(yuǎn)程倉庫中。
到此這篇關(guān)于SpringBoot左腳進(jìn)門之Maven管理家具體步驟的文章就介紹到這了,更多相關(guān)SpringBoot Maven管理家內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mybatis調(diào)用存儲過程,帶in、out參數(shù)問題
這篇文章主要介紹了mybatis調(diào)用存儲過程,帶in、out參數(shù)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01Java游戲服務(wù)器之?dāng)?shù)據(jù)庫表存取封裝
這篇文章主要介紹了Java游戲服務(wù)器之?dāng)?shù)據(jù)庫表存取封裝的相關(guān)資料,需要的朋友可以參考下2015-11-11JavaWeb項目中springmvc和tomcat對靜態(tài)文件的處理
這篇文章主要介紹了JavaWeb項目中springmvc和tomcat對靜態(tài)文件的處理 的相關(guān)資料,需要的朋友可以參考下2016-07-07MyBatis使用resultMap如何解決列名和屬性名不一致
這篇文章主要介紹了MyBatis使用resultMap如何解決列名和屬性名不一致的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-01-01解決springboot利用ConfigurationProperties注解配置數(shù)據(jù)源無法讀取配置信息問題
今天在學(xué)習(xí)springboot利用ConfigurationProperties注解配置數(shù)據(jù)源的使用遇到一個問題無法讀取配置信息,發(fā)現(xiàn)全部為null,糾結(jié)是哪里出了問題呢,今天一番思考,問題根源找到,下面把我的解決方案分享到腳本之家平臺,感興趣的朋友一起看看吧2021-05-05Java數(shù)據(jù)類型實現(xiàn)自動與強(qiáng)制轉(zhuǎn)換的示例代碼
Java數(shù)據(jù)類型之間的轉(zhuǎn)換有自動轉(zhuǎn)換和強(qiáng)制類型轉(zhuǎn)換,這篇文章主要給大家介紹Java數(shù)據(jù)類型如何實現(xiàn)自動轉(zhuǎn)換與強(qiáng)制轉(zhuǎn)換,需要的朋友可以參考下2023-05-05