理解固化的Maven依賴:spring-boot-starter-parent 與 spring-boot-dependencies

目錄

  • 理解固化的Maven依賴:spring-boot-starter-parent 與 spring-boot-dependencies
    • 1. spring-boot-starter-parent
      • 1.1 簡介
      • 1.2 特點
    • 2. spring-boot-dependencies
      • 2.1 簡介
      • 2.2 特點
    • 3. 異同點對比
      • 3.1 相同點
      • 3.2 不同點
      • 案例一:使用 spring-boot-starter-parent
      • 案例二:使用 spring-boot-dependencies
    • 4. 結語

理解固化的Maven依賴:spring-boot-starter-parent 與 spring-boot-dependencies

在Maven項目中,依賴管理是一個重要的方面。為了簡化項目的依賴管理,并提供一致性和穩定性,Spring Boot引入了兩個關鍵的父項目:spring-boot-starter-parentspring-boot-dependencies。本文將深入探討這兩個父項目的作用、特點以及它們之間的異同點,幫助讀者更好地理解和應用于實際項目中。

1. spring-boot-starter-parent

1.1 簡介

spring-boot-starter-parent 是Spring Boot項目的Maven父項目(POM),它提供了一系列默認的配置和依賴管理,用于簡化Spring Boot應用程序的構建和管理。

1.2 特點

  • 提供了一組默認的插件配置,如編譯插件、打包插件等,以及一些常用的屬性設置。
  • 繼承自Spring Boot的“Bill of Materials”(BOM),用于統一管理Spring Boot相關依賴的版本。
  • 配置了默認的編碼格式、Java版本等。
  • 繼承了Spring Boot的父項目后,無需顯式指定Spring Boot的版本,因為它已經被固定在了spring-boot-starter-parent中。

2. spring-boot-dependencies

2.1 簡介

spring-boot-dependencies 是Spring Boot提供的另一個重要的Maven項目,用于集中管理所有Spring Boot相關依賴的版本信息。

2.2 特點

  • 包含了Spring Boot中所有的starter依賴的版本信息,包括Spring Framework、Spring Boot自身以及其他常用的第三方庫。
  • 使用了<dependencyManagement>部分來管理依賴的版本信息,但是不會直接引入依賴。
  • 提供了一種簡化依賴聲明的方式,只需要聲明spring-boot-starter-*相關的依賴,而無需指定版本號,因為版本號已經被spring-boot-dependencies管理了。

3. 異同點對比

3.1 相同點

  • 都是Spring Boot提供的Maven父項目。
  • 都用于簡化Spring Boot項目的構建和依賴管理。
  • 都包含了一些默認的配置和依賴版本管理。

3.2 不同點

  • spring-boot-starter-parent 主要用于配置項目的基本設置,如插件配置、默認屬性等,而 spring-boot-dependencies 則主要用于集中管理Spring Boot相關依賴的版本信息。
  • spring-boot-starter-parent 中會繼承 spring-boot-dependencies 中定義的依賴版本信息,從而不需要在pom.xml中顯式聲明依賴的版本。
  • spring-boot-starter-parent 可以作為Maven父項目,被項目繼承,而 spring-boot-dependencies 只需要在項目的 dependencyManagement 中引入即可。

當涉及到使用 spring-boot-starter-parentspring-boot-dependencies 時,讓我們看幾個實際案例,以更清晰地理解它們的作用和用法。

案例一:使用 spring-boot-starter-parent

假設我們有一個簡單的Spring Boot項目,想要使用 spring-boot-starter-parent 來簡化配置。

<!-- pom.xml -->
<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.0http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>spring-boot-demo</artifactId><version>1.0.0-SNAPSHOT</version><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.3</version></parent><dependencies><!-- 添加Spring Boot Starter依賴 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies></project>

在這個案例中,我們在項目的 pom.xml 中引入了 spring-boot-starter-parent 作為父項目,并指定了版本號。通過繼承 spring-boot-starter-parent,我們無需顯式指定Spring Boot的版本,因為它已經被固定在了 spring-boot-starter-parent 中。

案例二:使用 spring-boot-dependencies

在這個案例中,我們將使用 spring-boot-dependencies 來管理Spring Boot相關依賴的版本。

<!-- pom.xml -->
<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.0http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>spring-boot-demo</artifactId><version>1.0.0-SNAPSHOT</version><properties><!-- 引入spring-boot-dependencies --><spring-boot.version>2.6.3</spring-boot.version></properties><dependencyManagement><dependencies><!-- 引入spring-boot-dependencies,管理版本 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><dependencies><!-- 添加Spring Boot Starter依賴 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies></project>

在這個案例中,我們在項目的 pom.xml 中引入了 spring-boot-dependencies,并在 <dependencyManagement> 部分中指定了它的版本。通過這種方式,我們無需顯式指定Spring Boot相關依賴的版本號,因為版本號已經被 spring-boot-dependencies 管理了。

這些案例展示了如何在項目中使用 spring-boot-starter-parentspring-boot-dependencies,通過簡化配置和管理依賴版本來提高項目的開發效率和可維護性。

4. 結語

通過本文的介紹,相信大家對于Spring Boot中的兩個重要的Maven父項目:spring-boot-starter-parentspring-boot-dependencies 有了更深入的了解。合理地使用這兩個父項目,可以幫助我們更加高效地構建和管理Spring Boot應用程序,提高項目的可維護性和穩定性。

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

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

相關文章

Java方法的重載

方法重載 1. 為什么需要方法重載 public class TestMethod{public static void main (String[] args){int a 10;int b 20;int ret add(a,b);System.out.println("ret "ret);double a2 10.5;double b2 20.5;double ret2 add(a2,b2);System.out.println("…

《QT實用小工具·六十二》基于QT實現貝塞爾曲線畫炫酷的波浪動畫

1、概述 源碼放在文章末尾 該項目實現了通過貝塞爾曲線畫波浪動畫&#xff0c;可控制 顏色密度速度加速度 安裝與運行環境 語言&#xff1a;C 框架&#xff1a;Qt 11.3 平臺&#xff1a;Windows 將屏幕水平平均分為10塊&#xff0c;在一定范圍內隨機高度的12個點&#xff08;…

飛天使-k8s知識點29-kubernetes安裝1.28.0版本

文章目錄 選用版本初始化服務器,自己修改里面的ipreboot haproxy安裝 &#xff0c;可以參考我之前寫的內核參數調整&#xff0c;安裝docker 安裝cri-dockerd開始安裝集群工具下載鏡像以及啟用完畢之后 此時的coredns 不通結果展示 選用版本 k8s 1.24版本之前還可以使用docker&…

【初階數據結構】順序表OJ題講解

前言 &#x1f4da;作者簡介&#xff1a;愛編程的小馬&#xff0c;正在學習C/C&#xff0c;Linux及MySQL。 &#x1f4da;本文收錄與初階數據結構系列&#xff0c;本專欄主要是針對時間、空間復雜度&#xff0c;順序表和鏈表、棧和隊列、二叉樹以及各類排序算法&#xff0c;持…

基于ambari hdp的kafka用戶授權讀寫權限

基于ambari hdp的kafka用戶授權讀寫權限 版本Kafka 2.0.0添加自定義配置修改admin密碼重啟kafka授權讀取授權寫入有效通配符部分舉例 版本Kafka 2.0.0 添加自定義配置 authorizer.class.name kafka.security.auth.SimpleAclAuthorizer super.users User:admin allow.everyo…

【LLM 論文】Step-Back Prompting:先解決更高層次的問題來提高 LLM 推理能力

論文&#xff1a;Take a Step Back: Evoking Reasoning via Abstraction in Large Language Models ???? Google DeepMind, ICLR 2024, arXiv:2310.06117 論文速讀 該論文受到的啟發是&#xff1a;人類再解決一個包含很多細節的具體問題時&#xff0c;先站在更高的層次上解…

Android 屏幕適配全攻略(上)-掌握屏幕單位,應對千變萬化的設備

本文從 Android 開發中常見的長度單位 px、dp、sp 入手&#xff0c;詳細介紹了它們的特點及轉換關系。 接著深入探討了屏幕尺寸、分辨率、像素密度等重要的屏幕指標&#xff0c;幫助讀者全面理解它們之間的聯系。最后&#xff0c;通過實例代碼演示了如何在代碼中進行單位轉換&…

三分鐘上手安全滲透系統Kali Linux

kali linux系統集成了常用的安全滲透工具&#xff0c;省去了安裝工具的時間&#xff0c;做安全相關的工作是非常推薦使用的。 安裝Kalii Linux 安裝系統 一般使用虛擬機進行安裝&#xff0c;Kali Linux基于Debian內核&#xff0c;虛擬機的操作系統選擇Debian 7.x 64 選擇系統…

【SRC實戰】一鍵完成全部任務獲取獎勵

挖個洞先 https://mp.weixin.qq.com/s/LkPfJuuP1K8vaFXRn-8wVg “ 以下漏洞均為實驗靶場&#xff0c;如有雷同&#xff0c;純屬巧合 ” 01 — 漏洞證明 一、業務邏輯 “ 如何欺騙APP完成任務獲取獎勵&#xff1f; ” 1、記錄金幣數量20 2、瀏覽商品詳情頁 3、點擊瀏覽提…

我們應該如何做參與式觀察

記得多年以前&#xff0c;有個朋友問我&#xff1a;對于做觀察&#xff0c;有人通過教授繪畫技巧來教人如何做觀察。你們研究員又不會畫畫&#xff0c;你們如何讓人相信你們更會觀察呢&#xff1f;坦率說&#xff0c;當時我被問住了&#xff0c;因為我從來沒有進行過這樣的對比…

day5Qt作業

服務器端 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//準備組件&#xff0c;初始化組件狀態this->setFixedSize(800,600);chatwidget new QListWidge…

代碼隨想錄算法訓練營第四十九天| 123.買賣股票的最佳時機III,188.買賣股票的最佳時機IV

目錄 題目鏈接&#xff1a;123.買賣股票的最佳時機III 思路 代碼 題目鏈接&#xff1a;188.買賣股票的最佳時機IV 思路 代碼 總結 題目鏈接&#xff1a;123.買賣股票的最佳時機III 思路 與之前買賣股票不同的是本題要求最多買賣兩次&#xff0c;那么dp數組以及遞推公式都…

攻擊者正在利用AI,對保險公司發起大規模欺詐

保險欺詐一直是保險行業面臨的重要挑戰之一&#xff0c;尤其隨著技術的進步&#xff0c;欺詐者也在不斷更新其手段&#xff0c;利用AI技術&#xff0c;包括生成式模型、機器學習和數據分析工具等欺騙保險公司&#xff0c;而AI技術的應用正成為他們的新工具&#xff0c;使其犯罪…

如何打造個人IP?

打造個人IP&#xff08;Intellectual Property&#xff09;是當今社會中越來越受到關注的話題。個人IP指的是個人在某個領域內所擁有的獨特的、具有商業價值的知識、技能、品牌和影響力。為什么要打造個人IP&#xff1f;如何打造個人IP&#xff1f;下面我將為您詳細解答。 首先…

Navicat連接遠程數據庫時,隔一段時間不操作出現的卡頓問題

使用 Navicat 連接服務器上的數據庫時&#xff0c;如果隔一段時間沒有使用&#xff0c;再次點擊就會出現卡頓的問題。 如&#xff1a;隔一段時間再查詢完數據會出現&#xff1a; 2013 - Lost connection to MySQL server at waiting for initial communication packet, syste…

LinkedList鏈表

LinkedList 的全面說明 LinkList底層實現了雙向鏈表和雙端隊列特點可以添加任意元素&#xff08;元素可以重復&#xff09;&#xff0c;包括null線程不安全&#xff0c;沒有實現同步 LinkedList 的底層操作機制 LinkedList底層維護了一個雙向鏈表LinkList中維護了兩個屬性fi…

【算法入門賽】A.坐標變換(推薦學習)C++題解與代碼

比賽鏈接&#xff1a;https://www.starrycoding.com/contest/8 題目描述 武漢市可以看做一個二維地圖。 牢 e e e掌握了一項特異功能&#xff0c;他可以“瞬移”&#xff0c;每次瞬移需要分別設定 x x x和 y y y的偏移量 d x dx dx和 d y dy dy&#xff0c;瞬移完成后位置會…

【Fastadmin】表格列改input框輸入編輯,以排序權重為例

目錄 1.自定義權重排序,以字段sort為例 js列代碼 在// 初始化表格table.bootstrapTable({ });的后面添加事件 api里面增加formatter方法,如果存在角色權限問題,控制器添

谷歌外鏈怎么發?

既要數量也要質量&#xff0c;要保證你的鏈接廣泛分布&#xff0c;在數量上&#xff0c;確實需要你的鏈接在各種平臺上有所展現&#xff0c;這樣能提升你網站的知名度和曝光率&#xff0c;但是&#xff0c;光有數量是不夠的&#xff0c;如果這些鏈接的內容不行&#xff0c;那對…

ARIMA模型在河流水質預測中的應用_含代碼

#水質模型 #時間序列 #python應用 ARIMA 時間序列模型簡介 時間序列是研究數據隨時間變化而變化的一種算法&#xff0c;是一種預測性分析算法。它的基本出發點就是事物發展都有連續性&#xff0c;按照它本身固有的規律進行。ARIMA(p,d,q)模型全稱為差分自回歸移動平均模型 (A…