日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Maven項(xiàng)目管理工具:MavenSNAPSHOT(快照)

 碼農(nóng)9527 2021-09-30

    我們知道,Maven項(xiàng)目第一構(gòu)建時(shí),會(huì)自動(dòng)從遠(yuǎn)程倉庫搜索依賴項(xiàng),并將其下載到本地倉庫中。當(dāng)項(xiàng)目再進(jìn)行構(gòu)建時(shí),會(huì)直接從本地倉庫搜索依賴項(xiàng)并引用,而不會(huì)再次向遠(yuǎn)程倉庫獲取。這樣的設(shè)計(jì)能夠避免項(xiàng)目每次構(gòu)建時(shí)都去遠(yuǎn)程倉庫下載依賴,減輕了網(wǎng)絡(luò)帶寬的壓力,但也帶來了問題。

Maven項(xiàng)目管理工具:MavenSNAPSHOT(快照)

    大型的應(yīng)用軟件通常由多個(gè)功能模塊組成,這些模塊一般分別于不同的團(tuán)隊(duì)負(fù)責(zé)開發(fā)。假設(shè)有兩個(gè)團(tuán)隊(duì),他們分別負(fù)責(zé)項(xiàng)目中的app-ui(前端)和data-service(數(shù)據(jù)服務(wù))兩個(gè)模塊,且app-ui需要依賴data-service項(xiàng)目作為數(shù)據(jù)服務(wù)來源。

    基于以上假設(shè),若data-service團(tuán)隊(duì)正在進(jìn)行快節(jié)奏的bug修復(fù)及功能增強(qiáng),會(huì)在短時(shí)間內(nèi)高頻率地更新代碼以及發(fā)布版本。就會(huì)出現(xiàn)以下情況:

    1、data-service團(tuán)隊(duì)每次發(fā)布新版本更新代碼時(shí),都應(yīng)該通知app-ui團(tuán)隊(duì)。

    2、app-ui團(tuán)隊(duì)則需要定期更新其pom.xml以獲得最新的版本。

    這樣,勢(shì)必會(huì)影響開發(fā)效率,甚至?xí)绊戫?xiàng)目的驗(yàn)收及投產(chǎn)。要解決這個(gè)問題,其實(shí)很簡(jiǎn)單,那就是使用SNAPSHOT(快照)版本。

    SNAPSHOT是什么

    SNAPSHOT(快照)是一種特殊的版本,它表示當(dāng)前開發(fā)進(jìn)度的副本。與常規(guī)版本不同,快照版本的構(gòu)件在發(fā)布時(shí),Maven會(huì)自動(dòng)為它打上一個(gè)時(shí)間戳,有了這個(gè)時(shí)間戳后,當(dāng)依賴該構(gòu)件的項(xiàng)目進(jìn)行構(gòu)建時(shí),Maven就能從倉庫中找到最新的SNAPSHOT版本文件。

    定義一個(gè)組件或模塊為快照版本,只需要在其pom.xml中版本號(hào)(version元素的值)后加上-SNAPSHOT即可,例如:

<groupId>net.biancheng.www</groupId>
<artifactId>helloMaven</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>1234復(fù)制代碼類型:[java]

    要解決上面的問題,現(xiàn)在就十分簡(jiǎn)單了:data-servcie團(tuán)隊(duì)每次更新代碼都使用快照版本發(fā)布到倉庫中,app-ui團(tuán)隊(duì)則引用快照版本的依賴,這樣app-ui不再需要重復(fù)修改pom.xml中的配置,每次構(gòu)建時(shí)都會(huì)自動(dòng)從倉庫中獲取最新的構(gòu)件。

    默認(rèn)情況下對(duì)于快照本本的構(gòu)件,Maven會(huì)每天從倉庫中獲取一次更新,用戶也可以在任何Maven命令中使用-U參數(shù)強(qiáng)制Maven檢查更新。命令如下:

mvn clean package -U1復(fù)制代碼類型:[java]

    SNAPSHOT版本VSRELEASE版本

    Maven倉庫分為兩種,Snapshot快照倉庫和Release發(fā)行倉庫。Snapshot快照倉庫用于保存開發(fā)過程中的不穩(wěn)定SNAPSHOT版本,Release發(fā)行倉庫則用來保存穩(wěn)定的RELEASE版本。

    Maven會(huì)根據(jù)模塊的版本號(hào)(pom.xml文件中的version元素)中是否帶有-SNAPSHOT來判斷是SNAPSHOT版本還是正式RELEASE版本。帶有-SNAPSHOT是SNAPSHOT(快照)版本,不帶-SNAPSHOT的就是正式RELEASE(發(fā)布)版本。

    SNAPSHOT版本和RELEASE版本區(qū)別如下表。

區(qū)別SNAPSHOT 版本RELEASE 版本
定義版本號(hào)中帶有 -SNAPSHOT 版本號(hào)中不帶有 -SNAPSHOT 
發(fā)布倉庫Snapshot 快照倉庫 Release 發(fā)行倉庫
是否從遠(yuǎn)程倉庫自動(dòng)獲取更新在不更改版本號(hào)的前提下,直接編譯打包時(shí),Maven 會(huì)自動(dòng)從遠(yuǎn)程倉庫上下載最新的快照版本。在不更改版本號(hào)的前提下,直接編譯打包時(shí),如果本地倉庫已經(jīng)存在該版本的模塊,則 Maven 不會(huì)主動(dòng)去遠(yuǎn)程倉庫下載。
穩(wěn)定性快照版本往往對(duì)應(yīng)了大量帶有時(shí)間戳的構(gòu)件,具有不穩(wěn)定性。發(fā)布版本只對(duì)應(yīng)了唯一的構(gòu)件,具有穩(wěn)定性。
使用場(chǎng)景快照版本只應(yīng)該在組織內(nèi)部的項(xiàng)目中依賴使用。Maven 項(xiàng)目使用的組織外的依賴項(xiàng)都應(yīng)該時(shí)發(fā)布版本的,不應(yīng)該使用任何的快照版本依賴,否則會(huì)造成潛在的風(fēng)險(xiǎn)。
發(fā)布前是否需要修改當(dāng)項(xiàng)目經(jīng)過完善的測(cè)試后,需要上線時(shí),應(yīng)該將項(xiàng)目從快照版本更改為發(fā)布版本不需要修改

    示例

    打開命令行窗口,跳轉(zhuǎn)到D:\maven\secondMaven目錄,執(zhí)行以下mvn命令。

mvn clean package -U1復(fù)制代碼類型:[java]

    命令執(zhí)行結(jié)果如下。

[INFO] Scanning for projects...
[WARNING]
[WARNING] Some problems were encountered while building the effective model for net.biancheng.www:secondMaven:jar:1.0-SNAPSHOT
[WARNING] 'dependencies.dependency.systemPath' for net.biancheng.www:helloMaven:jar should use a variable instead of a hard-coded path D:\maven\helloMaven\target\helloMaven-1.0-SNAPSHOT.jar @ line 37, column 16[WARNING]
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING]
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[WARNING]
[INFO]
[INFO] -------------------< net.biancheng.www:secondMaven >--------------------
[INFO] Building secondMaven 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ secondMaven ---
[INFO] Deleting D:\maven\secondMaven\target
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ secondMaven ---
[WARNING] Using platform encoding (GBK actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory D:\maven\secondMaven\src\main\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ secondMaven ---
[INFO] Changes detected - recompiling the module!
[WARNING] File encoding has not been set, using platform encoding GBK, i.e. build is platform dependent!
[INFO] Compiling 1 source file to D:\maven\secondMaven\target\classes
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ secondMaven ---
[WARNING] Using platform encoding (GBK actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory D:\maven\secondMaven\src\test\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ secondMaven ---
[INFO] Changes detected - recompiling the module!
[WARNING] File encoding has not been set, using platform encoding GBK, i.e. build is platform dependent!
[INFO] Compiling 1 source file to D:\maven\secondMaven\target\test-classes
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ secondMaven ---
[INFO] Surefire report directory: D:\maven\secondMaven\target\surefire-reports
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running net.biancheng.www.AppTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.008 sec
Results :
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ secondMaven ---
[INFO] Building jar: D:\maven\secondMaven\target\secondMaven-1.0-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  2.413 s
[INFO] Finished at: 2021-03-04T10:24:32+08:00
[INFO] ------------------------------------------------------------------------

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多