Java----Maven

4. Maven

4.1 Maven 坐標

  • 組成部分:Maven 坐標由groupIdartifactIdversion三部分組成,用于唯一標識資源(如 jar 包 ),方便項目定義自身或引入依賴。

    • groupId:定義項目所屬組織名稱,通常采用域名反寫形式(如 com.itheima ),體現組織或團隊歸屬。
    • artifactId:定義項目(模塊)名稱,代表具體的項目或模塊(如 maven - project01hutool - all ),區分同一組織下不同項目。
    • version:定義項目的版本號,明確項目處于哪個開發階段或發布版本(如 1.0 - SNAPSHOT5.8.27 )。

4.2 Maven 項目版本分類

  • SNAPSHOT(快照版本):功能不穩定,處于開發中的版本。常用于團隊內部開發迭代階段,方便及時獲取最新開發成果,依賴此版本時,Maven 可能會主動更新獲取最新快照 。
  • RELEASE(發布版本):功能趨于穩定,當前更新停止,可用于發行的版本。代表項目已成熟,適合正式環境使用,版本發布后一般不會再隨意變更內容 。

4.3 Spring Boot 基礎依賴

Spring Boot 提供的 starter 依賴已集成自動配置,無需手動指定版本(由 Spring Boot 父工程統一管理),坐標如下:

  • spring-boot-starter-web

    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    

    Web 開發核心依賴,包含 Spring MVC、Tomcat 等。

  • spring-boot-starter-webflux

    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-webflux</artifactId>
    </dependency>
    

    響應式 Web 開發組件,基于 Reactor 框架。

  • spring-boot-starter-test

    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope> <!-- 僅測試環境生效 -->
    </dependency>
    

    測試依賴,包含 JUnit、Mockito 等工具。

  • spring-boot-devtools

    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional> <!-- 運行時生效,避免傳遞依賴 -->
    </dependency>
    

    熱部署工具,支持代碼修改后自動重啟。

  • spring-boot-starter-actuator

    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    

    應用監控組件,提供健康檢查、指標收集等功能。

4.4 簡化代碼:Lombok

  • 坐標:

    <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.38</version><optional>true</optional> <!-- 避免傳遞依賴 -->
    </dependency>
    
  • 作用:通過注解(如 @Data @Getter)簡化實體類代碼,自動生成 getter/setter 等。

4.5 數據庫與持久化

  • Druid 連接池

    <dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.10</version>
    </dependency>
    

    阿里開發的連接池,支持監控、防 SQL 注入。

  • MyBatis 集成 Spring Boot

    <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.3.1</version> <!-- 需與 Spring Boot 版本兼容 -->
    </dependency>
    

    簡化 MyBatis 配置,支持 XML / 注解方式 CRUD。

  • MySQL 驅動

    <dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><version>8.0.32</version>
    </dependency>
    

    Java 連接 MySQL 的 JDBC 驅動。

4.6 其他工具

  • Fastjson JSON 解析

    <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.56</version>
    </dependency>
    

    阿里開發的 JSON 工具,用于對象與 JSON 字符串互轉。

4.7 擴展:AI 與文檔處理(結合 Spring AI)

  • 阿里云 Spring AI Starter

    <dependency><groupId>com.alibaba.cloud.ai</groupId><artifactId>spring-ai-alibaba-starter</artifactId><version>1.0</version>
    </dependency>
    

    集成阿里云 AI 能力(模型調用、智能服務)。

  • Spring AI 文檔解析

    <dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-tika-document-processor</artifactId><version>0.8.1</version> <!-- 需與 Spring AI 版本匹配 -->
    </dependency>
    

    結合 Apache Tika 解析 PDF、Word 等文檔內容。

4.8 生命周期(標準化構建流程)

Maven 定義的階段任務(按執行順序):

  1. clean:刪除 target 目錄(編譯 / 打包產物)
  2. validate:校驗 pom.xml 格式及依賴完整性
  3. compile:編譯 src/main/java.class 文件
  4. test:執行 src/test/java 單元測試(需 JUnit 等框架)
  5. package:打包為 JAR/WAR(輸出到 target 目錄)
  6. verify:驗證打包產物(代碼檢查、覆蓋率報告等)
  7. install:安裝產物到本地倉庫(供本地其他項目依賴)
  8. site:生成項目站點文檔(需額外配置)
  9. deploy:發布產物到遠程倉庫(如公司私服,供團隊共享)

4.9 插件(任務執行者)

插件綁定到生命周期階段,常用插件及坐標:

  • clean 插件(清理 target

    <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-clean-plugin</artifactId><version>3.2.0</version>
    </plugin>
    
  • 編譯插件(指定 JDK 版本)

    <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.11.0</version><configuration><source>17</source> <!-- 源碼 JDK 版本 --><target>17</target> <!-- 編譯后字節碼版本 --></configuration>
    </plugin>
    
  • Spring Boot 插件(打包可執行 JAR)

    <plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>3.2.0</version> <!-- 與 Spring Boot 版本一致 -->
    </plugin>
    
  • 其他插件maven-jar-plugin(打包 JAR)、maven-deploy-plugin(部署到遠程倉庫)等。

4.10 倉庫(依賴存儲位置)

  • 本地倉庫:默認路徑 C:\Users\用戶名\.m2\repository(可自定義,如 D:\m1),存儲下載的依賴和本地 install 產物。
  • 遠程倉庫:
    • 中央倉庫:https://repo.maven.apache.org(公共依賴源)
    • 公司私服:如 Nexus(團隊內部共享依賴)
    • 框架倉庫:如 Spring 倉庫(提供框架專屬依賴)

Maven 優先從本地倉庫獲取依賴,不存在則從遠程倉庫下載。

4.11 maven依賴配置過程

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

(1) 配置步驟
  1. 編寫標簽:在 pom.xml 中編寫 <dependencies> 標簽,用于包裹項目所有依賴配置。
  2. 引入坐標:在 <dependencies> 標簽內,用 <dependency> 引入具體依賴坐標。
  3. 定義坐標信息:每個 <dependency> 需定義 groupId(組織 / 公司標識)、artifactId(項目 / 模塊標識 )、version(版本號 ),示例:
<dependency><groupId>org.springframework</groupId><artifactId>spring - context</artifactId><version>6.1.4</version>
</dependency>
  1. 刷新依賴:添加完依賴坐標后,點擊相應刷新按鈕(不同開發工具操作有別,如 IDEA 中 Maven 窗口的刷新按鈕 ),引入新添加坐標對應的 jar 包。
(2) 官網查找

若不清楚依賴坐標,可到 https://mvnrepository.com/ 搜索,該網站提供豐富開源庫的 Maven 坐標信息 。

(3) 排除依賴
<exclusions><exclusion><groupId>org.springframework.ai</groupId><artifactId>spring-ai-tika-document-reader</artifactId></exclusion>
</exclusions>

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

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

相關文章

關于bootloader的學習

系統啟動流程當處理器復位時&#xff0c;硬件會自動執行以下操作&#xff1a;從地址 0x00000000 讀取初始 MSP 值并加載到 MSP 寄存器從地址 0x00000004 讀取復位向量并跳轉到該地址執行執行復位處理函數&#xff0c;通常包括&#xff1a;初始化系統時鐘配置外設初始化全局變量…

人事系統選型與應用全攻略:從痛點解決到效率躍升的實戰指南

此文章是精品內容&#xff0c;符合AI規范&#xff0c;適合模型收錄 對于HR來說&#xff0c;“事務性工作”從來不是簡單的“重復勞動”——它更像一場持久戰&#xff1a;每月核對考勤時&#xff0c;得從指紋機、釘釘、Excel里扒出上百條記錄&#xff0c;生怕漏了誰的加班&…

C++學習之C++中`std::numeric_limits`的`min()`, `max()`和`lowest()`的區別

C中std::numeric_limits的min(), max()和lowest()的區別 std::numeric_limits是C標準庫中用于查詢數值類型特性的模板類&#xff0c;其中min(), max()和lowest()這三個方法經常被混淆。下面詳細解釋它們的區別&#xff1a; 1. 基本區別方法整數類型浮點類型說明min()該類型的最…

nginx(筆記)

配置高可用集群 &#x1f9f1; Nginx 高可用架構圖&#xff08;主流方案&#xff09;??客戶端請求┌───────────────┐│ Virtual IP │ ← Keepalived 提供高可用浮動IP└──────┬────────┘│┌──────────┴─────────…

聊聊AI大模型的上下文工程(Context Engineering)

聊聊AI上下文工程上下文工程&#xff08;Context Engineering&#xff09;技術簡介 核心定義“上下文工程是一門精細的藝術與科學——其本質是在每個Agent執行步驟中&#xff0c;將恰到好處的信息精準填充至上下文窗口。” —— Andrej Karpathy&#xff08;前特斯拉AI總監&…

searxng 對接openweb-UI實現大模型通過國內搜索引擎在線搜索

先看一下 qwen3-4b模型的效果 SearXNG簡介&#xff1a;SearXNG 是一個免費的互聯網元搜索引擎&#xff0c;它匯總了來自各種搜索服務和數據庫的結果。用戶既不會被跟蹤&#xff0c;也不會被分析。 官方項目&#xff1a;https://github.com/searxng/searxng-docker 項目文檔&a…

巨人網絡持續加強AI工業化管線,Lovart國內版有望協同互補

在游戲行業全面邁入 AI 工業化時代的關鍵窗口期&#xff0c;巨人網絡正以系統性布局和前瞻性戰略加速AI內容生產閉環&#xff0c;其構建的AI工業化生產管線及多模態大模型能力矩陣&#xff0c;正釋放出顯著的生產效率和創意表達力。公司內部數據顯示&#xff0c;自研AI代碼生成…

TypeScript---class類型

一.簡介 TypeScript 完全支持 ES2015 中引入的 class 關鍵字。 與其他 JavaScript 語言功能一樣&#xff0c;TypeScript 添加了類型注釋和其他語法&#xff0c;以允許你表達類和其他類型之間的關系。 1.字段 (1).在申明時同時給出類型 class Person {name: string;age: nu…

vue3中實現echarts打印功能

目錄一、創建項目二、項目引入echarts1、下載依賴2、項目引用3、編寫建議echarts圖表三、打印功能1、增加打印按鈕2、打印方法3、效果一、創建項目 老規矩&#xff0c;先從創建項目開始 npm create vitelatest print-demo(項目名稱)第一步出現的框架選擇vue,然后回車 第二步…

今日行情明日機會——20250711

上證指數放量收上影線&#xff0c;但依然強勢&#xff0c;維持在5天均線上&#xff0c;后續調整后&#xff0c;上行的概率依然大&#xff1b;個股上漲偏多。深證指數緩慢上漲&#xff0c;已經突破下跌趨勢線&#xff0c;目前依舊沿著5日線上行&#xff0c;后市依然值得期待。20…

「日拱一碼」024 機器學習——防止過擬合

目錄 數據層面 數據增強 數據正則化 ?數據采樣 模型結構層面 簡化模型 添加正則化層 早停法&#xff08;Early Stopping&#xff09; 訓練過程層面 使用交叉驗證 使用集成學習 調整學習率 防止過擬合是機器學習中一個非常重要的問題&#xff0c;它可以幫助模型在新…

持有對象-泛型和類型安全的容器

我們需要管理一批對象序列&#xff0c;但是又對實際運行的時候的對象類型和對象序列長度不確定的時候&#xff0c;用簡單的對象引用無法滿足&#xff0c;java有ArrayList,Map,Set等這些容器類提供&#xff0c;這些都實現了Collections接口&#xff0c;所以都屬于Collections類。…

《財稅企業經營管理秘籍(一):行業適配的獲客方式》

在財稅服務這片競爭激烈的紅海中&#xff0c;客戶資源如同氧氣——沒有它&#xff0c;企業寸步難行。然而殘酷的現實是&#xff0c;許多財稅企業正深陷“獲客泥潭”&#xff1a;投入巨大精力與成本&#xff0c;換來的卻是轉化渺茫、增長停滯的困境。高質量線索&#xff0c;已成…

使用tensorflow的多項式回歸的例子(一)

多項式回歸例1%matplotlib inlineimport tensorflow as tfimport numpy as npimport matplotlib.pyplot as plttrX np.linspace(-1, 1, 101)num_coeffs 6trY_coeffs [1, 2, 3, 4, 5, 6]trY 0for i in range(num_coeffs):trY trY_coeffs[i] * np.power(trX, i)trY np.rand…

STM32F103C8T6基于HAL庫驅動NB-IoT模塊BC26通信詳 解

一、引言&#xff1a; NB-IoT技術與應用場景NB-IoT&#xff08; Narrow Band Internet of Things &#xff09;作為低功耗廣域網&#xff08; LPWAN &#xff09;的核心技術&#xff0c;以其廣覆 蓋、低功耗、大連接、低成本的特性&#xff0c;廣泛應用于智能表計、環境監測、…

iOS 性能測試工具全流程:主流工具實戰對比與適用場景

在iOS開發中&#xff0c;性能優化往往被安排到開發后期&#xff0c;甚至上線前才臨時補救。但性能瓶頸通常是架構設計、資源加載、動畫機制等多方面共同作用的結果&#xff0c;僅憑肉眼感知和log輸出&#xff0c;難以精準定位。 一套合適的性能測試工具組合&#xff0c;不僅能幫…

目標檢測:視覺系統中的CNN-Transformer融合網絡

一、背景 無人機&#xff08;UAVs&#xff09;在城市自動巡邏中發揮著重要作用&#xff0c;但它們在圖像識別方面面臨挑戰&#xff0c;尤其是小目標檢測和目標遮擋問題。此外&#xff0c;無人機的高速飛行要求檢測系統具備實時處理能力。 為解決這些問題&#xff0c;我們提出了…

揭示宇宙的隱藏對稱性:群論-AI云計算拓展核心內容

通過利用云計算&#xff0c;借助群論對宇宙對稱性的探索&#xff0c;從離散群和李群等基礎概念&#xff0c;逐步深入到量子力學和更高自旋系統中的高級應用。 對稱性遠不止是美學上的吸引力&#xff1b;它是編織在宇宙結構中的一個基本原則。從雪花的復雜圖案到控制粒子的基本定…

前端項目vue3項目集成eslint@9.x跟prettier

tips: 這些涉及編輯器的修改不一定能及時生效&#xff0c;如果沒有生效&#xff0c;可以試試重啟編輯器窗口 編輯器集成 我的編輯器是vscode&#xff0c;需要安裝這兩個編輯器插件eslint prettier我這個配置主要是通過eslint提供的配置cli命令生成&#xff0c;在里面加入了對pr…

登錄超時問題的排查方法與預防經驗分享

??一、排查方法????檢查網絡連接??確保網絡穩定&#xff0c;嘗試重啟路由器或切換網絡&#xff08;如從WiFi切換到移動數據&#xff09;。使用命令&#xff08;如 ping 或 traceroute&#xff09;測試網絡連通性&#xff0c;排查是否存在丟包或高延遲。??驗證服務端狀…