03-Web后端基礎(Maven基礎)

1. 初始Maven

1.1 介紹

Maven 是一款用于管理和構建Java項目的工具,是Apache旗下的一個開源項目 。

Apache 軟件基金會,成立于1999年7月,是目前世界上最大的最受歡迎的開源軟件基金會,也是一個專門為支持開源項目而生的非盈利性組織。

開源項目:https://www.apache.org/index.html#projects-list

那我們之前在JavaSE階段,沒有使用Maven,依然可以構建Java項目。 我們為什么現在還要學習Maven呢 ? 那接下來,我們就來聊聊Maven的作用。

1.2 Maven的作用

1.2.1 依賴管理

方便快捷的管理項目依賴的資源(jar包),避免版本沖突問題。

1). 使用maven前

我們項目中要想使用某一個jar包,就需要把這個jar包從官方網站下載下來,然后再導入到項目中。然后在這個項目中,就可以使用這個jar包了。

2). 使用maven后

當使用maven進行項目依賴(jar包)管理,則很方便的可以解決這個問題。 我們只需要在maven項目的pom.xml文件中,添加一段如下圖所示的配置即可實現。

在maven項目的配置文件中,加入上面這么一段配置信息之后,maven會自動的根據配置信息的描述,去下載對應的依賴。 然后在項目中,就可以直接使用了。

1.2.2 項目構建

Maven還提供了標準化的跨平臺的自動化構建方式。

如上圖所示我們開發了一套系統,代碼需要進行編譯、測試、打包、發布等過程,這些操作是所有項目中都需要做的,如果需要反復進行就顯得特別麻煩,而Maven提供了一套簡單的命令來完成項目構建。

通過Maven中的命令,就可以很方便的完成項目的編譯(compile)、測試(test)、打包(package)、發布(deploy) 等操作。

而且這些操作都是跨平臺的,也就是說無論你是Windows系統,還是Linux系統,還是Mac系統,這些命令都是支持的。

1.2.3 統一項目結構

Maven 還提供了標準、統一的項目結構 。

1). 未使用Maven

由于java的開發工具呢,有很多,除了大家熟悉的IDEA以外,還有像早期的Eclipse、MyEclipse。而不同的開發工具,創建出來的java項目的目錄結構是存在差異的,那這就會出現一個問題。

Eclipse創建的java項目,并不能直接導入IDEA中。 IDEA創建的java項目,也沒有辦法直接導入到Eclipse中。

2). 使用Maven

而如果我們使用了Maven這一款項目構建工具,它給我們提供了一套標準的java項目目錄。如下所示:

也就意味著,無論我們使用的是什么開發工具,只要是基于maven構建的java項目,最終的目錄結構都是相同的,如圖所示。 那這樣呢,我們使用Eclipse、MyEclipse、IDEA創建的maven項目,就可以在各個開發工具直接直接導入使用了,更加方便、快捷。

而在上面的maven項目的目錄結構中,main目錄下存放的是項目的源代碼,test目錄下存放的是項目的測試代碼。 而無論是在main還是在test下,都有兩個目錄,一個是java,用來存放源代碼文件;另一個是resources,用來存放配置文件。

最后呢,一句話總結一下什么是Maven。 Maven就是一款管理和構建java項目的工具。

Maven的內容,我們進行了分層的設計和講解,分為兩個部分:Maven核心和Maven進階。 那今天,我們先來講解Maven核心部分的內容,在Web開發的最后,我們再來講解Maven進階部分的內容。

2. Maven概述

2.1 Maven介紹

Apache Maven是一個項目管理和構建工具,它基于項目對象模型(Project Object Model , 簡稱: POM)的概念,通過一小段描述信息來管理項目的構建、報告和文檔。

官網:Welcome to Apache Maven – Maven

Maven的作用:

  1. 方便的依賴管理
  2. 統一的項目結構
  3. 標準的項目構建流程

2.2 Maven模型

  • 項目對象模型 (Project Object Model)
  • 依賴管理模型(Dependency)
  • 構建生命周期/階段(Build lifecycle & phases)

1). 構建生命周期/階段(Build lifecycle & phases)

以上圖中紫色框起來的部分,就是用來完成標準化構建流程 。當我們需要編譯,Maven提供了一個編譯插件供我們使用;當我們需要打包,Maven就提供了一個打包插件供我們使用等。

2). 項目對象模型 (Project Object Model)

以上圖中紫色框起來的部分屬于項目對象模型,就是將我們自己的項目抽象成一個對象模型,有自己專屬的坐標,如下圖所示是一個Maven項目:

坐標,就是資源(jar包)的唯一標識,通過坐標可以定位到所需資源(jar包)位置。

坐標的組成部分:

  • groupId: 組織名
  • arfitactId: 模塊名
  • Version: 版本號

3). 依賴管理模型(Dependency)

以上圖中紫色框起來的部分屬于依賴管理模型,是使用坐標來描述當前項目依賴哪些第三方jar包。

之前我們項目中需要jar包時,直接就把jar包復制到項目下的lib目錄,而現在我們只需要在pom.xml中配置依賴的配置文件即可。 而這個依賴對應的jar包其實就在我們本地電腦上的maven倉庫中。

如下圖,就是老師本地的maven倉庫中的jar文件:

2.3 Maven倉庫

倉庫:用于存儲資源,管理各種jar包

倉庫的本質就是一個目錄(文件夾),這個目錄被用來存儲開發中所有依賴(就是jar包)和插件

Maven倉庫分為:

  • 本地倉庫:自己計算機上的一個目錄(用來存儲jar包)
  • 中央倉庫:由Maven團隊維護的全球唯一的。倉庫地址:https://repo1.maven.org/maven2/
  • 遠程倉庫(私服):一般由公司團隊搭建的私有倉庫

當項目中使用坐標引入對應依賴jar包后,

  • 首先會查找本地倉庫中是否有對應的jar包
    • 如果有,則在項目直接引用
    • 如果沒有,則去中央倉庫中下載對應的jar包到本地倉庫
  • 如果還可以搭建遠程倉庫(私服),將來jar包的查找順序則變為: 本地倉庫 --> 遠程倉庫--> 中央倉庫

2.4 Maven安裝

認識了Maven后,我們就要開始使用Maven了,那么首先我們要進行Maven的下載與安裝。

2.4.1 下載
  • 下載地址:https://maven.apache.org/download.cgi
  • 在提供的資料中,已經提供了下載好的安裝包。如下:

暫時無法在飛書文檔外展示此內容

2.4.2 安裝步驟

Maven安裝配置步驟:

  1. 解壓安裝
  2. 配置倉庫
  3. 配置阿里云私服
  4. 配置Maven環境變量

1). 解壓 apache-maven-3.9.4-bin.zip(解壓即安裝)

建議解壓到沒有中文、特殊字符的路徑下。如課程中解壓到 E:\develop 下。

解壓縮后的目錄結構如下:

  • bin目錄 : 存放的是可執行命令。(mvn 命令重點關注)
  • conf目錄 :存放Maven的配置文件。(settings.xml配置文件后期需要修改)
  • lib目錄 :存放Maven依賴的jar包。(Maven也是使用java開發的,所以它也依賴其他的jar包)

2). 配置本地倉庫

  1. 在自己計算機上新一個目錄(本地倉庫,用來存儲jar包)

  1. 進入到conf目錄下修改settings.xml配置文件
    1. 使用超級記事本軟件,打開settings.xml文件,定位到53行
    2. 復制<localRepository>標簽,粘貼到注釋的外面(55行)
    3. 復制之前新建的用來存儲jar包的路徑,替換掉<localRepository>標簽體內容

3). 配置阿里云私服

由于中央倉庫在國外,所以下載jar包速度可能比較慢,而阿里公司提供了一個遠程倉庫,里面基本也都有開源項目的jar包。

進入到conf目錄下修改settings.xml配置文件:

  1. 使用超級記事本軟件,打開settings.xml文件,定位到160行左右
  2. <mirrors>標簽下為其添加子標簽<mirror>,內容如下:
<mirror><id>alimaven</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf>
</mirror>

注意配置的位置,在<mirrors> ... </mirrors>中間添加配置。如下圖所示:

4). 配置環境變量

Maven環境變量的配置類似于JDK環境變量配置一樣

  1. 在系統變量處新建一個變量MAVEN_HOME。 MAVEN_HOME環境變量的值,設置為maven的解壓安裝目錄

  1. 在Path中進行配置。 PATH環境變量的值,設置為:%MAVEN_HOME%\bin

  1. 打開DOS命令提示符進行驗證,出現如圖所示表示安裝成功 。

命令為:mvn -v

5). 配置關聯的JDK版本(可選)

進入到conf目錄下修改settings.xml配置文件,在 <profiles> </profiles>中增加如下配置:

<profile><id>jdk-17</id><activation><activeByDefault>true</activeByDefault><jdk>17</jdk></activation><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><maven.compiler.compilerVersion>17</maven.compiler.compilerVersion></properties>
</profile>

3. IDEA集成Maven

我們要想在IDEA中使用Maven進行項目構建,就需要在IDEA中集成Maven,那么就需要在IDEA中配置與maven的關聯。

3.1 創建Maven項目

3.1.1 全局設置
  1. 進入IDEA的歡迎頁面

選擇 IDEA中 File => close project => Customize=> All settings

  1. 打開 All settings , 選擇 Build,Execution,Deployment => Build Tools => Maven

  1. 配置工程的編譯版本為17

這里所設置的maven的環境信息,并未指定任何一個project,此時設置的信息就屬于全局配置信息。 以后,我們再創建project,默認就是使用我們全局配置的信息。

3.1.2 創建項目
  1. 創建一個空項目,命名為 web-project01

  1. 創建好項目之后,進入項目中,要設置JDK的版本號。選擇小齒輪,選擇 Project Structure

  1. 創建模塊,選擇Java語言,選擇Maven。 填寫模塊的基本信息

  1. 在maven項目中,創建HelloWorld類,并運行

Maven項目的目錄結構:

maven-project01

|--- src (源代碼目錄和測試代碼目錄)

|--- main (源代碼目錄)

|--- java (源代碼java文件目錄)

|--- resources (源代碼配置文件目錄)

|--- test (測試代碼目錄)

|--- java (測試代碼java目錄)

|--- resources (測試代碼配置文件目錄)

|--- target (編譯、打包生成文件存放目錄)

3.1.3 pom文件詳解

POM (Project Object Model) :指的是項目對象模型,用來描述當前的maven項目。

  • 使用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"><!-- POM模型版本 --><modelVersion>4.0.0</modelVersion><!-- 當前項目坐標 --><groupId>com.itheima</groupId><artifactId>maven-project01</artifactId><version>1.0-SNAPSHOT</version><!-- 項目的JDK版本及編碼 --><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties></project>

pom文件詳解:

  • <project>:pom文件的根標簽,表示當前maven項目
  • <modelVersion>:聲明項目描述遵循哪一個POM模型版本
    • 雖然模型本身的版本很少改變,但它仍然是必不可少的。目前POM模型版本是4.0.0
  • 坐標 :
    • <groupId><artifactId><version>
    • 定位項目在本地倉庫中的位置,由以上三個標簽組成一個坐標
  • <maven.compiler.source> :編譯JDK的版本
  • <maven.compiler.target> :運行JDK的版本
  • <project.build.sourceEncoding> : 設置項目的字符集

3.2 Maven坐標

什么是坐標?

  • Maven中的坐標是資源的唯一標識 , 通過該坐標可以唯一定位資源位置
  • 使用坐標來定義項目或引入項目中需要的依賴

Maven坐標主要組成:

  • groupId:定義當前Maven項目隸屬組織名稱(通常是域名反寫,例如:com.itheima)
  • artifactId:定義當前Maven項目名稱(通常是模塊名稱,例如 order-service、goods-service)
  • version:定義當前項目版本號
    • SNAPSHOT: 功能不穩定、尚處于開發中的版本,即快照版本
    • RELEASE: 功能趨于穩定、當前更新停止,可以用于發行的版本

如下圖就是使用坐標表示一個項目:

注意:

  • 上面所說的資源可以是插件、依賴、當前項目。
  • 我們的項目如果被其他的項目依賴時,也是需要坐標來引入的。

3.3 導入Maven項目

在IDEA中導入Maven項目,有兩種方式。

  • 方式一:File->Project Structure->Modules->Import Module->選擇maven項目的pom.xml

  • 方式二:Maven面板->+(Add Maven Projects)->選擇maven項目的pom.xml

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/81940.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/81940.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/81940.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

實景VR展廳制作流程與眾趣科技實景VR展廳應用

實景VR展廳制作是一種利用虛擬現實技術將現實世界中的展覽空間數字化并在線上重現的技術。 這種技術通過三維重建和掃描等手段&#xff0c;將線下展館的場景、展品和信息以三維形式搬到云端數字空間&#xff0c;從而實現更加直觀、立體的展示效果。在制作過程中&#xff0c;首…

Python爬蟲實戰:獲取天氣網最近一周北京的天氣數據,為日常出行做參考

1. 引言 隨著互聯網技術的發展,氣象數據的獲取與分析已成為智慧城市建設的重要組成部分。天氣網作為權威的氣象信息發布平臺,其數據具有較高的準確性和實時性。然而,人工獲取和分析天氣數據效率低下,無法滿足用戶對精細化、個性化氣象服務的需求。本文設計并實現了一套完整…

幾種超聲波芯片的特點和對比

一 CX20106A ZIP - 8 CX20106A ZIP - 8 的核心競爭力在于高性價比、易用性和抗光干擾能力&#xff0c;尤其適合消費電子、短距離工業檢測和低成本物聯網場景。盡管在距離和精度上不及高端芯片&#xff0c;但其成熟的電路方案和廣泛的市場應用&#xff08;如經典紅外遙控升級為超…

利用ffmpeg截圖和生成gif

從視頻中截取指定數量的圖片 ffmpeg -i input.mp4 -ss 00:00:10 -vframes 1 output.jpgffmpeg -i input.mp4 -ss 00:00:10 -vframes 180 output.jpg -vframes 180代表截取180幀, 實測后發現如果視頻是60fps,那么會從第10秒截取到第13秒-i input.mp4&#xff1a;指定輸入視頻文…

系統架構設計師案例分析題——數據庫緩存篇

一.核心知識 1.redis和MySQL的同步方案怎么做的&#xff1f; 讀數據&#xff1a;先查詢緩存&#xff0c;緩存不存在則查詢數據庫&#xff0c;然后將數據新增到緩存中寫數據&#xff1a;新增時&#xff0c;先新增數據庫&#xff0c;數據庫成功后再新增緩存&#xff1b;更新和刪…

什么是智能體?

什么是智能體&#xff1f; 智能體&#xff08;AI Agent&#xff09;是一種能夠自主感知環境、做出決策并執行任務的智能實體&#xff0c;其核心依賴大型語言模型&#xff08;LLM&#xff09;或深度學習算法作為“大腦”模塊。它通過感知模塊&#xff08;如多模態輸入&#xff…

企業數字化轉型是否已由信息化+自動化向智能化邁進?

DeepSeek引發的AI熱潮迅速蔓延到了各個行業&#xff0c;目前接入DeepSeek的企業&#xff0c;涵蓋了科技互聯網、云服務、電信、金融、能源、汽車、手機等熱門領域&#xff0c;甚至全國各地政府機構也紛紛引入。 在 DeepSeek 等國產 AI 技術的推動下&#xff0c;眾多企業已經敏銳…

廣州卓遠VR受邀參加2025智能體育典型案例調研活動,并入駐國體華為運動健康聯合實驗室!

近日&#xff0c;“2025年智能體育典型案例調研活動”在東莞松山湖成功舉辦。本次調研活動由國家體育總局體育科學研究所和中國信息通信研究院聯合主辦&#xff0c;旨在深入貫徹中央關于培育新型消費的戰略部署&#xff0c;通過激活智能健身產品消費潛力&#xff0c;加快運動健…

springboot+vue實現鮮花商城系統源碼(帶用戶協同過濾個性化推薦算法)

今天教大家如何設計一個 鮮花商城 , 基于目前主流的技術&#xff1a;前端vue3&#xff0c;后端springboot。學習完這個項目&#xff0c;你將來找工作開發實際項目都會又很大幫助。文章最后部分還帶來的項目的部署教程。 系統有著基于用戶的協同過濾推薦算法&#xff0c;還有保證…

【android bluetooth 協議分析 02】【bluetooth hal 層詳解 3】【高通藍牙hal主要流程介紹-上】

1. 背景 本節主要討論 高通 藍牙 hal 中&#xff0c;的一些流程。 看看你是否都清楚如下問題&#xff1a; 高通芯片電如何控制&#xff1f;串口是在哪里控制的&#xff1f;固件如何下載&#xff1f;初始化流程是怎么樣的&#xff1f; 如果你已經對上述討論的問題&#xff0c…

JavaEE 初階文件操作與 IO 詳解

一、文件操作基礎&#xff1a;File 類 作用&#xff1a;操作文件或目錄&#xff08;創建、刪除、獲取信息&#xff09;。 核心方法&#xff1a; exists()&#xff1a;文件是否存在createNewFile()&#xff1a;創建新文件mkdir()&#xff1a;創建目錄delete()&#xff1a;刪除…

C++(27): 標準庫 <iterator>

目錄 1. 核心概念 2. 基本語法 3. 特點 4. 特有成員函數與工具 5. 內存與性能 6. 示例代碼 7. 成員函數與類型 8. 使用場景 9. 注意事項 1. 核心概念 迭代器(Iterator) 是 C++ 中用于訪問和遍歷容器元素的通用接口,類似于指針,但支持更豐富的操作。 抽象訪問機制:…

談談 Kotlin 中的構造方法,有哪些注意事項?

在 Kotlin 中&#xff0c;構造方法分為主構造方法&#xff08;Primary Constructor&#xff09;和次構造方法&#xff08;Secondary Constructor&#xff09;。 1 主構造方法 主構造方法是類的核心構造方法&#xff0c;直接在類頭聲明&#xff0c;位于類名之后。 1.1 基本語…

年會招標抽獎活動軟件———仙盟創夢IDE

年會是企業一年的總結與歡慶時刻&#xff0c;而抽獎環節更是點燃全場氣氛的關鍵。如何讓抽獎環節既大氣又充滿儀式感&#xff1f;選對抽獎軟件至關重要&#xff01;本文精心挑選了 3 款兼具實用性與氛圍感的年會抽獎軟件&#xff0c;從界面設計到功能特色&#xff0c;全方位為你…

安全軟件檢測進程異常行為-Postgresql應用執行異常指令whoami

文章目錄 環境癥狀問題原因解決方案 環境 系統平臺&#xff1a;UOS&#xff08;海光&#xff09; 版本&#xff1a;4.5.8 癥狀 數據庫安裝包&#xff1a; 安全軟件告警中提示“sh -c whoami”命令&#xff0c;是由數據庫發出的&#xff0c;安全軟件捕獲到了postgres.exe–fo…

車載診斷架構 --- LIN 節點 ECU 故障設計原則

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 鈍感力的“鈍”,不是木訥、遲鈍,而是直面困境的韌勁和耐力,是面對外界噪音的通透淡然。 生活中有兩種人,一種人格外在意別人的眼光;另一種人無論…

GPU加速的AlphaFold3蛋白質復合體預測:如何在64GB顯存下跑超大規模模型(混合精度+模型并行實戰技巧)

一、AlphaFold3的超大規模挑戰與優化方向 AlphaFold3作為當前生物計算領域的革命性工具&#xff0c;其核心架構基于擴散模型&#xff0c;能夠預測包含蛋白質、核酸、小分子配體等復雜生物復合物的三維結構。然而&#xff0c;模型參數量級&#xff08;典型配置超百億級&#xf…

Qt功能區:Ribbon控件

控件 1. 按鈕1.1 多選按鈕1.2 2. 下拉列表框SARibbonComboBox2.1 簡介2.2 代碼實現 1. 按鈕 1.1 多選按鈕 軟件功能&#xff1a;用于實現Category的名稱居中。 SARibbonCheckBox繼承于QCheckBox&#xff0c;使用方法完全相同。 SARibbonCheckBox* checkBox new SARibbonChe…

一個由微軟開源的 Python 工具,用于將多種文件格式轉換為 Markdown 格式

&#x1f4da; Markitdown 由微軟開源的 Python 工具&#xff0c;用于將多種文件格式轉換為 Markdown 格式 支持&#xff1a;PDF、PowerPoint、Word、Excel、圖像、音頻、HTML、文本格式&#xff08;CSV、JSON、XML&#xff09;、ZIP 文件的轉換。 它旨在提供一個簡單且靈活的…

Linux的進程概念

目錄 1、馮諾依曼體系結構 2、操作系統(Operating System) 2.1 基本概念 2.2 目的 3、Linux的進程 3.1 基本概念 3.1.1 PCB 3.1.2 struct task_struct 3.1.3 進程的定義 3.2 基本操作 3.2.1 查看進程 3.2.2 初識fork 3.3 進程狀態 3.3.1 操作系統的進程狀態 3.3…