Maven快照
大型應用軟件一般由多個模塊,它是多個團隊正在開發同一個應用程序的不同模塊,其中常見的場景。例如,考慮一個團隊正在對應用程序的應用程序,用戶界麵項目(app-ui.jar:1.0) 的前端和他們正在使用的數據服務計劃 (data-service.jar:1.0)。
現在,它可能發生,團隊工作的數據服務正在發生快速的步伐bug修複或增強功能和它們釋放出庫到遠程倉庫幾乎每隔一天。
現在,如果數據服務團隊上傳新版本隔日然後會出現下麵的問題
-
數據服務的團隊應該每次都告訴應用程序UI的團隊時,他們已經發布了更新後的代碼。
-
UI團隊需要經常更新自己的pom.xml中獲得更新的版本的應用程序。
為了處理這類情況,快照的概念開始發揮作用。
什麼是快照?
快照是一個特殊版本,指出目前開發複印件。不同於常規版本,Maven的檢查新的快照版本中,每生成一個遠程存儲庫。
現在,數據服務團隊將公布更新後的代碼每次的快照存儲庫說,數據服務:1.0-SNAPSHOT替換一個舊的SNAPSHOT jar。
快照與版本
如遇版本的,如果一旦Maven的下載所提到的版本為,data-service:1.0,它永遠不會嘗試下載更新1.0可在庫中。要下載更新的代碼,數據服務版本升級到1.1。
Maven會自動獲取最新的快照(data-service:1.0-SNAPSHOT)每次應用程序UI團隊建立自己的項目。
app-ui pom.xml
app-ui 項目使用數據服務的1.0-SNAPSHOT
<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.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>app-ui</groupId> <artifactId>app-ui</artifactId> <version>1.0</version> <packaging>jar</packaging> <name>health</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>data-service</groupId> <artifactId>data-service</artifactId> <version>1.0-SNAPSHOT</version> <scope>test</scope> </dependency> </dependencies> </project>
data-service pom.xml
數據服務項目釋放1.0快照對於每一個微小的變化
<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.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>data-service</groupId> <artifactId>data-service</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <name>health</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> </project>
雖然,如快照,Maven自動獲取上每天最新的快照。您可以強製使用-U切換到任何maven命令來下載最新的快照版本。
mvn clean package -U
讓我們打開命令控製台,進入到 C: > MVN > app-ui 目錄,然後執行以下命令mvn命令。
C:MVNapp-ui>mvn clean package -U
Maven會下載數據服務的最新快照後開始構建該項目。
[INFO] Scanning for projects... [INFO] ------------------------------------------------------------------- [INFO] Building consumerBanking [INFO] task-segment: [clean, package] [INFO] ------------------------------------------------------------------- [INFO] Downloading data-service:1.0-SNAPSHOT [INFO] 290K downloaded. [INFO] [clean:clean {execution: default-clean}] [INFO] Deleting directory C:MVNapp-ui arget [INFO] [resources:resources {execution: default-resources}] [WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] skip non existing resourceDirectory C:MVNapp-uisrcmain resources [INFO] [compiler:compile {execution: default-compile}] [INFO] Compiling 1 source file to C:MVNapp-ui argetclasses [INFO] [resources:testResources {execution: default-testResources}] [WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent! [INFO] skip non existing resourceDirectory C:MVNapp-uisrc est resources [INFO] [compiler:testCompile {execution: default-testCompile}] [INFO] Compiling 1 source file to C:MVNapp-ui arget est-classes [INFO] [surefire:test {execution: default-test}] [INFO] Surefire report directory: C:MVNapp-ui arget surefire-reports ------------------------------------------------------- T E S T S ------------------------------------------------------- Running com.companyname.bank.AppTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.027 sec Results : Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 [INFO] [jar:jar {execution: default-jar}] [INFO] Building jar: C:MVNapp-ui arget app-ui-1.0-SNAPSHOT.jar [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------ [INFO] Total time: 2 seconds [INFO] Finished at: Tue Jul 10 16:52:18 IST 2012 [INFO] Final Memory: 16M/89M [INFO] ------------------------------------------------------------------------