【黑馬JavaWeb+AI知識梳理】后端Web基礎01 - Maven

Maven

Maven核心

Maven概述

  • 定義:

    Maven是一款用于管理和構建Java項目的工具,是apache旗下的一個開源項目,基于項目對象模型(POM,project object model)的概念,通過一小段描述信息來管理項目的構建。官網:http://maven.apache.org/

  • 作用:

    • 依賴管理:方便快捷地管理依賴的資源(jar包)
    • 項目構建:標準化的跨平臺(Linux、Windows、MacOS)的自動化項目構建方式
    • 統一項目結構:提供標準、統一的項目結構
  • 結構:

    • POM
    • dependencies
    • 構建生命周期/階段
    • 倉庫:用于存儲和管理各種jar包
      • 本地倉庫(1):自己計算機上的一個目錄
      • 遠程倉庫(私服,2):一般由公司團隊搭建的私有倉庫。
      • 中央倉庫(3):由Maven團隊維護的全球唯一的。倉庫地址:https://repo1.maven.org/maven2/

IDEA集成Maven

  • 創建Maven項目

    • 配置Maven環境(全局)
  • Maven坐標

    • Maven中的坐標是資源(jar)的唯一標識,通過該坐標可以唯一定位資源位置。
    • 使用坐標來定義項目或引入項目中需要的依賴
    • 主要組成
      • groupId:定義當前Maven項目隸屬組織名稱(通常是域名反寫)
      • artifactId:定義當前Maven項目名稱(通常是模塊名稱)
      • version:定義當前項目版本號(約定規范)
        • SNAPSHOT:功能不穩定、尚處于開發中的版本,即快照版本
        • RELEASE:功能趨于穩定、當前更新停止,可以用于發行的版本
  • 導入Maven項目

    建議將要導入的maven項目復制到你的項目目錄下

    建議選擇maven項目的pom.xml文件進行導入(后續的繼承與集合,如果一個模塊關聯了其他模塊,選擇pom可以一次性將其他相關模塊一起導入)

    • File -> Project Structure -> Modules -> Import Module -> 選擇maven項目的pom.xml
    • Maven面板 -> + (Add Maven Projects) -> 選擇maven項目的pom.xml

依賴管理

注意:一旦依賴配置變更了,記得重新加載

注意:引入的依賴本地倉庫不存在,記得聯網

  • 依賴:指當前項目運行所需要的jar包,一個項目中可以引入多個依賴。

  • 配置:

    • 在pom.xml中編寫<dependencies>標簽
    • <dependencies>標簽中使用<dependency>引入坐標
    • 定義坐標的groupId, artifactId, version
    • 點擊刷新按鈕,引入最新加入的坐標
    • 如果不知道依賴的坐標信息,可以到官網中搜索
    • 依賴傳遞:如果A依賴了B,B依賴了C,C依賴了D,如果引入A,會引入ABCD
  • 排除依賴

    • 排除依賴:指主動斷開依賴的資源,被排除的資源無需指定版本

      <exclusion></exclusion>
      

生命周期

Maven的生命周期就是為了對所有的maven項目構建過程進行抽象和統一。

Maven中有相互獨立的3套生命周期:

下文只列出了重要的5個生命周期,實際上還有很多

在同一套生命周期中,當運行后面的階段時,前面的階段都會運行

  • clean:清理工作
    • clean:移除上一次構建生成的文件
  • default:核心工作,如編譯、測試、打包、安裝、部署等
    • compile:編譯項目源代碼
    • test:使用合適的單元測試框架運行測試(junit)
    • package:將編譯后的文件打包,如:jar、war等
    • install:安裝項目到本地倉庫
  • site:生成報告、發布站點等

執行生命周期的兩種方式:

  • 在idea中,右側的maven工具欄,選中對應的生命周期,雙擊執行。
  • 在命令行中,通過命令執行。

單元測試

測試

一種用來促進鑒定軟件的正確性、完整性、安全性和質量的過程。

階段劃分

  • 單元測試(白盒測試)
    • 介紹:對軟件的基本組成單位進行測試,最小測試單位。
    • 目的:檢驗軟件基本組成單位的正確性。
    • 測試人員:開發人員
  • 集成測試(灰盒測試)
    • 介紹:將已分別通過測試的單元,按設計要求組合成系統或子系統,再進行的測試。
    • 目的:檢查單元之間的協作是否正確。
    • 測試人員:開發人員
  • 系統測試(黑盒測試)
    • 介紹:對已經集成好的軟件系統進行徹底的測試。
    • 目的:驗證軟件系統的正確性、性能是否滿足指定的要求。
    • 測試人員:測試工程師
  • 驗收測試(黑盒測試)
    • 介紹:交付測試,時針對用戶需求、業務流程進行的正式的測試。
    • 目的:驗證軟件系統是否滿足驗收標準。
    • 測試人員:客戶/需求方

測試方法

  • 白盒測試
    • 清楚軟件內部結構、代碼邏輯
    • 用于驗證代碼、邏輯正確性
  • 黑盒測試
    • 不清楚軟件內部結構、代碼邏輯
    • 用于驗證軟件的功能、兼容性等方面
  • 灰盒測試
    • 結合了白盒、黑盒測試的特點,既關注軟件的內部結構又考慮外部表現(功能)
單元測試
快速入門

針對最小的功能單元(方法),編寫測試代碼對其正確性進行測試

JUnit:最流行的Java測試框架之一,提供了一些功能,方便程序進行單元測試(第三方公司提供)

main方法測試

  • 測試代碼與源代碼未分開,難以維護
  • 一個方法測試失敗,影響后面方法
  • 無法自動化測試,得到測試報告

JUnit單元測試(推薦)

  • 測試代碼與源代碼分開,便于維護

  • 可根據需要進行自動化測試

  • 可自動分析測試結果,產出測試報告(通過:綠色,失敗:紅色)

  • 一個測試方法執行失敗,不會影響其它測試方法

  • 步驟

    • 在pom.xml中,引入JUnit的依賴
    • 在test/java目錄下,創建測試類,并編寫對應的測試方法,并在方法上聲明@Test注解。
  • 命名規范

    類(規范):XxxxTest

    方法(規定): @Test <br> public void testXxxx

斷言

JUnit提供的輔助方法,用來幫我們確定被測試的方法是否按照預期的效果正常工作,這種方式稱為斷言。

  • 單元測試方法運行不報錯,不代表業務方法沒問題
  • 通過斷言可以檢測方法運行結果是否和預期一致,從而判斷業務方法的正確性
  • Assertions.assertXxxx(…)
斷言方法描述
Assertions.assertEquals(Object exp, Object act, String msg)檢查兩個值是否相等,不相等就報錯
Assertions.assertNotEquals(Object unexp, Object act, String msg)檢查兩個值是否不相等,相等就報錯
Assertions.assertNull(Object act, String msg)檢查對象是否為null,不為null就報錯
Assertions.assertNotNull(Object act, String msg)檢查對象是否不為null,為null就報錯
Assertions.assertTrue(boolean condition, String msg)檢查對象是否為true,不為true就報錯
Assertions.assertFalse(boolean condition, String msg)檢查對象是否為false,不為false就報錯
Assertions.assertThrows(Class expType, Executable exec, String msg)檢查程序運行拋出的異常,是否符合預期

上述方法形參中的最后一個參數msg,表示錯誤提示信息,可以不指定(有對應的重載方法)

常見注解

JUnit還提供了常見注解,還增強其功能,常見的注解有:

0注解說明備注
@Test測試類中的方法用它修飾才能成為測試方法,才能啟動執行單元測試
@ParameterizedTest參數化測試的注解(可以讓單個測試運行多次,每次運行時僅參數不同)用了該注解就不需要@Test注釋了
@ValueSource參數化測試的參數來源,賦予測試方法參數與參數化測試注解配合使用
@DisplayName指定測試類、測試方法顯示的名稱(默認為類名、方法名)
@BeforeEach用來修飾一個實例方法,該方法會在每一個測試方法執行之前執行一次初始化資源(準備工作)
@AfterEach用來修飾一個實例方法,該方法會在每一個測試方法執行之后執行一次釋放資源(清理工作)
@BeforeAll用來修飾一個靜態方法,該方法會在所有測試方法之前只執行一次初始化資源(準備工作)
@AfterAll用來修飾一個靜態方法,該方法會在所有測試方法之后只執行一次釋放資源(清理工作)
單元測試-企業開發規范
  • 原則:編寫測試方法是,要盡可能覆蓋業務方法中所有可能的情況(尤其是邊界值)。
  • 使用with Coverage檢測覆蓋率。

依賴范圍

  • 依賴的jar包,默認情況下,可以在任何地方使用。可以通過<scope>xxx</scope>設置其作用范圍。

  • 作用范圍:

    • 主程序范圍有效。(main文件夾范圍內)

    • 測試程序范圍有效。(test文件夾范圍內)

    • 是否參與打包運行。(package指令范圍內)

      scope值主程序測試程序打包(運行)范例
      compile(默認)YYYlog4j
      test-Y-junit
      providedYY-servlet-api
      runtime-YYjdbc驅動

Maven常見問題解決方案

  • Maven面板出現紅色下劃線,刷新無用

    • 產生原因:由于網絡原因,依賴沒有下載完整導致的,在maven倉庫中生成了xxx.lastUpdated文件,該文件不刪除,不會再重新下載

    • 解決方案:通過命令(del /s *.lastUpdated)批量遞歸刪除指定目錄下的xxx.lastUpdated文件,刪除之后重新加載項目即可

      重新加載下載依賴之后如果仍然報紅,關閉IDEA重載項目

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

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

相關文章

C語言易混淆知識點詳解

C語言中容易混淆的知識點詳解 C語言作為一門基礎且強大的編程語言&#xff0c;有許多容易混淆的概念和特性。以下是C語言中一些常見易混淆知識點的詳細解析&#xff1a; 1. 指針與數組 相似點&#xff1a; c 復制 下載 int arr[10]; int *ptr arr; 都可以使用[]運算符訪…

MCP原理詳解及實戰案例(動嘴出UI稿、3D建模)

文章目錄 MCP 原理介紹架構核心組件協議層傳輸層連接生命周期MCP與function calling: 互補關系 MCP python SDKMCP的優點 怎么用MCP&#xff1a;天氣服務參考應用項目&#xff1a; REF 24年11月份&#xff0c;claude推出了模型上下文協議( MCP),作為一種潛在的解決方案&#xf…

2025年深圳杯數學建模(東三省)B題【顏色轉換】原論文講解(含完整python代碼)

大家好呀&#xff0c;從發布賽題一直到現在&#xff0c;總算完成了2025年深圳杯數學建模&#xff08;東三省&#xff09;B題【顏色轉換】完整的成品論文。 本論文可以保證原創&#xff0c;保證高質量。絕不是隨便引用一大堆模型和代碼復制粘貼進來完全沒有應用糊弄人的垃圾半成…

cpp學習筆記1--class

2年前學過cpp&#xff0c;但是一直沒有用到&#xff0c;現在要讀研了&#xff0c;終于要用到了&#xff0c;重新拿出來看一看&#xff0c;覺得很多東西都能在c和python上看到影子。 #include "iostream" class Person { private:std::string name;int age;public://…

基于YOLOv的目標檢測訓練數據構建方法研究—圖像采集、標注、劃分與增強一體化流程設計

在目標檢測任務中,高質量的訓練數據是模型性能提升的關鍵。本文圍繞 YOLOv 系列模型,系統性地研究了目標檢測訓練數據的構建方法,提出了一套從圖像采集、標注、數據集劃分到數據增強的一體化流程設計 。通過多源圖像采集策略確保樣本多樣性,結合 LabelImg 工具完成 VOC 格式…

SQL數據庫操作大全:從基礎到高級查詢技巧

大家好&#xff0c;歡迎來到程序視點&#xff01;我是你們的老朋友.小二&#xff01; SQL數據庫操作核心語法精要 數據庫基礎操作 創建/刪除數據庫&#xff1a;CREATE DATABASE / DROP DATABASE 備份SQL Server&#xff1a;使用sp_addumpdevice和BACKUP DATABASE命令 數據庫…

[2025]MySQL的事務機制是什么樣的?redolog,undolog、binog三種日志的區別?二階段提交是什么?ACID怎么保證的?主從復制的過程?

MySQL事務機制與日志系統詳解 一、MySQL事務機制 1. 事務特性&#xff08;ACID&#xff09; 特性實現機制原子性(Atomicity)undo log回滾,(事務作為一個整體被執行&#xff0c;包含在其中的對數據庫的操作要么全部被執行&#xff0c;要么都不執行)。一致性(Consistency)約束…

LLama-v2 權重下載

地址&#xff1a;llama模型 官方github倉庫&#xff1a;llama倉庫 注意點 網絡代理位置&#xff1a;美國下面的國家選擇 United States 克隆倉庫后 運行bash download.sh輸入郵箱收到的URL選擇要下載的權重等待下載完成即可 有問題留言&#xff01;&#xff01;&#xff01…

zephyr OS架構下構建Nordic MCU boot

目錄 概述 1. 軟硬件環境 1.1 軟件開發環境 1.2 硬件環境 2 MCU boot 2.1 核心功能 2.2 關鍵術語 2.3 重要字段介紹 3 VS-Code下創建MCU-BOOT項目 3.1 軟件框架結構 3.2 創建測試項目 3.3 編譯項目 3.3 固件在Flash中的分布 4 驗證 4.1 燒寫固件 ? 4.2 代碼…

【Mytais系列】介紹、核心概念

MyBatis 是一款優秀的 持久層框架&#xff0c;它通過簡化 JDBC 操作、提供靈活的 SQL 映射能力&#xff0c;成為 Java 開發中處理數據庫交互的核心工具之一。以下是 MyBatis 的核心框架和概念解析&#xff1a; 一、MyBatis 框架概述 1. 核心定位 作用&#xff1a;將 Java 對象…

IO模型和多路復用

一、IO模型的基礎理解 什么是IO? IO全稱是 Input/Output(輸入/輸出),在計算機科學里主要指程序與外部設備(硬盤、網絡、用戶終端等)進行數據交換的操作。首要特點是: IO通常很慢(從CPU和內存的視角看)經常需要等待外部設備響應1. 為什么要談IO模型? 當一個程序需要…

深入理解 Bash 中的 $‘...‘ 字符串語法糖

在 Bash 腳本編程中&#xff0c;字符串處理是不可或缺的一部分。為了讓開發者更高效地處理特殊字符和控制字符&#xff0c;Bash 引入了一種獨特的字符串語法糖&#xff1a;$&#xff08;帶單引號的 ANSI-C 風格字符串&#xff09;。這種語法來源于 C 語言的 ANSI-C 標準&#x…

用Python打造自己的專屬命令行工具

在日常的開發和使用過程中&#xff0c;我們常常會編寫一些實用的Python腳本&#xff0c;比如用來批量處理文件、獲取系統信息等。然而&#xff0c;每次都要輸入python script_name.py來運行腳本&#xff0c;時間一長難免覺得繁瑣。要是能像使用系統自帶的命令&#xff08;如ls、…

【KWDB 創作者計劃】KWDB 2.2.0多模融合架構與分布式時序引擎

KWDB介紹 KWDB數據庫是由開放原子開源基金會孵化的分布式多模數據庫&#xff0c;專為AIoT場景設計&#xff0c;支持時序數據、關系數據和非結構化數據的統一管理。其核心架構采用多模融合引擎&#xff0c;集成列式時序存儲、行式關系存儲及自適應查詢優化器&#xff0c;實現跨模…

學習Linux的第二天

如何在Linux環境下做開發 Linux的一些基操 Tips&#xff1a;平常最表層的是命令行模式&#xff0c;最多見這個默認叫做命令行模式 Vi操作是什么意思呢 就是在提示符輸入vi a.c 是可以創建一個a.c這個文件并進入這個輸入模式 按i可以輸入代碼 要退出的時候按esc 再按:(冒號…

鏈表操作練習

要求 現在有一個雙向鏈表&#xff0c;里面要保存歌曲的名字&#xff1b;例如 蔡琴/渡口.mp3 我們把它定義在一個link.h文件中。 #ifndef LINK_H #define LINK_H #include <stdlib.h> #include <stdio.h> #include <string.h>typedef struct Node {//保存歌…

MATLAB制作散點圖:從基礎到進階的三種類型講解

一、什么是散點圖 散點圖是一種用來展示兩個或多個變量之間關系的圖表形式。它可以幫助我們直觀地觀察變量之間是否存在相關性、趨勢或異常值&#xff0c;常用于數據分析的初步探索階段。 二、三種類型散點圖 1. 基本二維散點圖&#xff1a;最簡單、最常用 基本二維散點圖的…

模塊方法模式(Module Method Pattern)

&#x1f9e0; 模塊方法模式&#xff08;Module Method Pattern&#xff09; 模塊方法模式是一種結構型設計模式&#xff0c;它將復雜的操作分解成一系列相對簡單、獨立且單一職責的模塊。每個模塊負責完成一種具體的操作&#xff0c;其他模塊或系統可以通過調用這些模塊的公開…

Python中的JSON庫,詳細介紹與代碼示例

目錄 1. 前言 2. json 庫基本概念 3. json 的適應場景 4. json 庫的基本用法 4.1 導 json入 模塊 4.2 將 Python 對象轉換為 JSON 字符串 4.3 將 JSON 字符串轉換為 Python 對象 4.4 將 Python 對象寫入 JSON 文件 4.5 從 JSON 文件讀取數據 4.6 json 的其他方法 5.…

網狐旗艦大聯盟組件源碼私測筆記:結構分層、UI重構與本地實操全流程

作為一套衍生于傳統網狐架構的源碼版本&#xff0c;大聯盟這套源碼組件可謂是在經典基礎上進行了深度重塑。與老版死板的框架風格不同&#xff0c;它不僅對界面做了大刀闊斧的重構&#xff0c;還在組件層級的組織上做了優化。本文將基于一整套源碼進行深度解析&#xff0c;強調…