小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

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

 碼農9527 2021-09-30

    我們知道,Maven項目第一構建時,會自動從遠程倉庫搜索依賴項,并將其下載到本地倉庫中。當項目再進行構建時,會直接從本地倉庫搜索依賴項并引用,而不會再次向遠程倉庫獲取。這樣的設計能夠避免項目每次構建時都去遠程倉庫下載依賴,減輕了網絡帶寬的壓力,但也帶來了問題。

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

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

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

    1、data-service團隊每次發(fā)布新版本更新代碼時,都應該通知app-ui團隊。

    2、app-ui團隊則需要定期更新其pom.xml以獲得最新的版本。

    這樣,勢必會影響開發(fā)效率,甚至會影響項目的驗收及投產。要解決這個問題,其實很簡單,那就是使用SNAPSHOT(快照)版本。

    SNAPSHOT是什么

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

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

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

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

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

mvn clean package -U1復制代碼類型:[java]

    SNAPSHOT版本VSRELEASE版本

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

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

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

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

    示例

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

mvn clean package -U1復制代碼類型:[java]

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

[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] ------------------------------------------------------------------------

    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多