maven 指定version不生效的問題
maven 指定version不生效
在項(xiàng)目中依賴一個 spring-security 版本時, 發(fā)現(xiàn)未生效, 調(diào)用報(bào)錯
由于項(xiàng)目是依賴了srpingBoot
<parent> ? ? <groupId>org.springframework.boot</groupId> ? ? <artifactId>spring-boot-starter-parent</artifactId> ? ? <version>2.3.1.RELEASE</version> ? ? <relativePath/> <!-- lookup parent from repository --> </parent>
只要加入spring-security的依賴, 哪怕指定了版本, 也會使用springBoot中的版本
找了半天, 發(fā)現(xiàn)把security的版本依賴放在maven的 dependencyManagement標(biāo)簽中即可
有關(guān)maven依賴中的version
構(gòu)件依賴解析機(jī)制
1、首先判斷依賴的范圍是否為system,如果是system,直接從本地文件系統(tǒng)解析構(gòu)件;
2、非system,需要根據(jù)依賴坐標(biāo)計(jì)算倉庫路徑,然后先從本地倉庫尋找構(gòu)件,找到構(gòu)件解析成功;
3、如果本地倉庫找不到,再判斷版本號是否為明確版本號,如果版本號明確,會從遠(yuǎn)程倉庫下載相應(yīng)版本的構(gòu)件;
4、如果版本號不明確,如 RELEASE、LATEST 和 SNAPSHOT,Maven 就需要根據(jù)遠(yuǎn)程倉庫更新策略來檢查更新
- 當(dāng)RELEASE或者LATEST時,則會基于更新策略讀取遠(yuǎn)程倉庫的maven-metadata.xml,然后將其與本地倉庫對應(yīng)的元數(shù)據(jù)合并且計(jì)算出 RELEASE或LATEST的實(shí)際值,再根據(jù)這個真實(shí)的版本號值檢查本地和遠(yuǎn)程倉庫(步驟2、3)
- 當(dāng)為SNAPSHOT時,則會基于更新策略讀取遠(yuǎn)程倉庫的maven-metadata.xml,然后將其與本地倉庫對應(yīng)元數(shù)據(jù)合并且得到最新快照版本的值,再根據(jù)這個最新的快照版本號值檢查本地和遠(yuǎn)程倉庫(步驟2、3)
通過配置或命令行參數(shù)去設(shè)置遠(yuǎn)程倉庫檢查更新的策略
alwaysdailyintervalnever
配置方式:
<repository>? ? ? <id>xxx-snapshots</id> ? ? ? <url>https://xxx/repository/maven-xxx-snapshots/</url> ? ? ? <releases>? ? ? ? ? <enabled>true</enabled> ? ? </releases> ? ? ? <snapshots>? ? ? ? ? <enabled>true</enabled> ? ? ? ? ? <updatePolicy>always</updatePolicy>? ? ? </snapshots>? </repository>?
SNAPSHOT
最新快照版本:
即使本地倉庫已緩存,仍然會根據(jù)更新策略去遠(yuǎn)程倉庫檢查構(gòu)件是否更新,然后下載最新時間戳的構(gòu)件。
當(dāng)maven 檢測到需要依賴一個Snashot版本時,就會嘗試從所有的遠(yuǎn)程倉庫下載對應(yīng)的meta文件,并在與本地的meta文件進(jìn)行merge,得到一個與{0.1.0-SNAPSHOT}并帶有時間戳的最新的版本號{0.1.0-20210910.091638-3},然后再嘗試下載該版本。
<dependency> ? ? ?<groupId>com.etoak</groupId> ? ? ?<artifactId>test</artifactId> ? ? ?<version>SNAPSHOT</version> ?</dependency>
RELEASE
最新發(fā)布版本:
如果本地倉庫沒有緩存,會去遠(yuǎn)程倉庫獲??;如果本地倉庫已緩存,即使遠(yuǎn)程倉庫同一版本號有更新,也不再去遠(yuǎn)程倉庫獲取。
<dependency> ? ? ?<groupId>com.etoak</groupId> ? ? ?<artifactId>test</artifactId> ? ? ?<version>RELEASE</version> ?</dependency>
LATEST
最新版本:
下載最新的SNAPSHOT或者最新的RELEASE,不推薦使用。
<dependency> ? ? ?<groupId>com.etoak</groupId> ? ? ?<artifactId>test</artifactId> ? ? ?<version>LATEST</version> ?</dependency>
指定依賴的版本范圍:
<dependency> ? ? ?<groupId>com.etoak</groupId> ? ? ?<artifactId>test</artifactId> ? ? ?<version>[1.0.1,)</version> ?</dependency>
范圍說明:
| Range | Meaning |
|---|---|
| 1.0 | x >= 1.0 * The default Maven meaning for 1.0 is everything (,) but with 1.0 recommended. Obviously this doesn't work for enforcing versions here, so it has been redefined as a minimum version. |
| (,1.0] | x <= 1.0 |
| (,1.0) | x < 1.0 |
| [1.0] | x == 1.0 |
| [1.0,) | x >= 1.0 |
| (1.0,) | x > 1.0 |
| (1.0,2.0) | 1.0 < x < 2.0 |
| [1.0,2.0] | 1.0 <= x <= 2.0 |
| (,1.0],[1.2,) | x <= 1.0 or x >= 1.2. Multiple sets are comma-separated |
| (,1.1),(1.1,) | x != 1.1 |
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Mybatis-Plus中updateById方法不能更新空值問題解決
本文主要介紹了Mybatis-Plus中updateById方法不能更新空值問題解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08
深入了解SparkSQL中數(shù)據(jù)的加載與保存
這篇文章主要為大家詳細(xì)介紹了SparkSQL中數(shù)據(jù)的加載與保存的相關(guān)知識,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以了解下2023-11-11
spring boot2.0圖片上傳至本地或服務(wù)器并配置虛擬路徑的方法
最近寫了關(guān)于圖片上傳至本地文件夾或服務(wù)器,上傳路徑到數(shù)據(jù)庫,并在上傳時預(yù)覽圖片。本文通過實(shí)例代碼給大家分享spring boot2.0圖片上傳至本地或服務(wù)器并配置虛擬路徑的方法,需要的朋友參考下2018-12-12
mybatisplus的公共字段插入的實(shí)現(xiàn)
這篇文章主要介紹了mybatisplus的公共字段插入,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11
MyBatis超詳細(xì)講解如何實(shí)現(xiàn)分頁功能
MyBatis-Plus?是一個?Mybatis?增強(qiáng)版工具,在?MyBatis?上擴(kuò)充了其他功能沒有改變其基本功能,為了簡化開發(fā)提交效率而存在,本篇文章帶用它實(shí)現(xiàn)分頁功能2022-03-03
idea下載svn的項(xiàng)目并且運(yùn)行操作
這篇文章主要介紹了idea下載svn的項(xiàng)目并且運(yùn)行操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09

