本發(fā)明涉及信息技術(shù)領(lǐng)域,具體地說(shuō)是一種實(shí)用性強(qiáng)、基于ANT的項(xiàng)目差量升級(jí)方法。
背景技術(shù):
ANT是當(dāng)前JAVA環(huán)境下最好用的打包部署工具,其采用xml的格式進(jìn)行腳本編寫(xiě),功能非常強(qiáng)大。ANT工具使用前,打包部署的流程一般是更新svn代碼,修改相關(guān)的配置,編譯class,發(fā)布到TOMCAT(WEB工程),測(cè)試啟動(dòng)無(wú)誤,手動(dòng)打包。項(xiàng)目開(kāi)發(fā)或上線后,不同項(xiàng)目版本之間頻繁升級(jí),會(huì)導(dǎo)致人工頻繁打包、部署。ANT工具的使用則避免了人工重復(fù)打包,重復(fù)部署的工作。借助ant自動(dòng)升級(jí)使得開(kāi)發(fā)人員從項(xiàng)目手動(dòng)升級(jí)這樣一個(gè)重復(fù)的,沒(méi)有技術(shù)含量的,耗費(fèi)體力的工作中解放出來(lái),從而把有限的項(xiàng)目時(shí)間更多的放到開(kāi)發(fā)實(shí)現(xiàn)中,從整體上推動(dòng)了項(xiàng)目的開(kāi)發(fā)進(jìn)度。
項(xiàng)目在版本升級(jí)過(guò)程中現(xiàn)有方案多數(shù)采用全量升級(jí)方式進(jìn)行。項(xiàng)目本地打出一個(gè)全量包后在項(xiàng)目生產(chǎn)環(huán)境中執(zhí)行全部替換來(lái)完成項(xiàng)目的升級(jí)。對(duì)于一個(gè)需要版本升級(jí)的項(xiàng)目系統(tǒng),執(zhí)行全量替換耗時(shí)相對(duì)較長(zhǎng),對(duì)于項(xiàng)目中一些沒(méi)有修改文件的替換也無(wú)端耗費(fèi)了服務(wù)端及網(wǎng)絡(luò)傳輸性能。尤其在網(wǎng)絡(luò)不穩(wěn)定情況下,全量升級(jí)帶來(lái)的帶寬壓力會(huì)導(dǎo)致項(xiàng)目文件的丟失?,F(xiàn)有采用增量升級(jí)的方案中,增量文件的獲取大多通過(guò)自定義代碼(或第三方軟件)實(shí)現(xiàn)項(xiàng)目文件內(nèi)容逐行比對(duì)或文件時(shí)間戳比對(duì)的方式來(lái)獲取,且增量升級(jí)中僅考慮了項(xiàng)目中增加的文件,而忽略了對(duì)項(xiàng)目中已刪減文件的處理。此種增量升級(jí)方式,一方面獲取增量文件列表的文件比對(duì)實(shí)現(xiàn)方式及性能上有待考究,另一方面忽略了對(duì)項(xiàng)目中已刪減文件的處理將導(dǎo)致項(xiàng)目中文件只增不減,垃圾文件不斷膨脹,最終影響項(xiàng)目的正常運(yùn)行。
基于此,現(xiàn)提供一種基于ANT的項(xiàng)目差量升級(jí)方法,通過(guò)該方法,一方面緊密結(jié)合項(xiàng)目開(kāi)發(fā)的SVN環(huán)境,調(diào)用ANT的SVN版本比對(duì)命令,快速獲取項(xiàng)目當(dāng)前版本與待升級(jí)版本的差量文件列表(包含項(xiàng)目增加文件及項(xiàng)目刪減文件)。另一方面,基于差量文件列表在項(xiàng)目升級(jí)過(guò)程中不僅對(duì)增加的文件進(jìn)行添加,對(duì)于刪減的文件通過(guò)獲取刪減文件原路徑,執(zhí)行ANT命令進(jìn)行刪除處理。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的技術(shù)任務(wù)是針對(duì)以上不足之處,提供一種實(shí)用性強(qiáng)、基于ANT的項(xiàng)目差量升級(jí)方法。
一種基于ANT的項(xiàng)目差量升級(jí)方法,其具體實(shí)現(xiàn)過(guò)程為:
首先基于項(xiàng)目SVN版本的對(duì)比獲取差量文件,即通過(guò)ANT的SVN插件命令對(duì)項(xiàng)目的升級(jí)版本和當(dāng)前版本執(zhí)行差異對(duì)比,獲取差量文件;
同步差量文件,基于上述獲取到的差量文件,對(duì)已有項(xiàng)目進(jìn)行同步,同步項(xiàng)目當(dāng)前版本至升級(jí)版本,完成項(xiàng)目升級(jí)。
獲取差量文件的過(guò)程為:
首先獲取項(xiàng)目升級(jí)版本;
然后獲取項(xiàng)目升級(jí)版本與項(xiàng)目當(dāng)前版本差量文件列表;
最后獲取基于當(dāng)前版本的差量升級(jí)包。
獲取項(xiàng)目升級(jí)版本過(guò)程為:在ANT腳本中通過(guò)執(zhí)行SVN下載命令checkout命令,下載項(xiàng)目升級(jí)版本至本地目錄;編譯項(xiàng)目升級(jí)版本并將工程的class部分打包成jar庫(kù)以備后續(xù)差量文件編譯使用。
獲取項(xiàng)目升級(jí)版本與項(xiàng)目當(dāng)前版本差量文件列表過(guò)程為:在ANT腳本中通過(guò)執(zhí)行SVN比對(duì)命令獲取項(xiàng)目升級(jí)版本和項(xiàng)目當(dāng)前版本的文件差異列表,即差量文件列表,包含新增加文件及已修改文件。
獲取基于當(dāng)前版本的差量升級(jí)包的過(guò)程為:基于差量文件列表通過(guò)編寫(xiě)的差量文件導(dǎo)出工具類(lèi)導(dǎo)出差量文件并記錄項(xiàng)目刪減文件路徑至自定義的相關(guān)文件中,使用ANT編譯差量文件并生成相應(yīng)的壓縮包。
所述差量文件導(dǎo)出工具類(lèi)中,輸入?yún)?shù)為:差量文件路徑,即通過(guò)執(zhí)行SVN比對(duì)命令獲取項(xiàng)目升級(jí)版本和項(xiàng)目當(dāng)前版本的差量文件列表中的文件路徑;基本路徑,升級(jí)版本項(xiàng)目基本路徑與差量文件路徑一起構(gòu)成項(xiàng)目中差量文件的絕對(duì)路徑;保存路徑,存放差量文件的新路徑,與差量文件路徑一起構(gòu)成了存放差量文件的絕對(duì)路徑;輸出結(jié)果為:輸出差量文件目錄及項(xiàng)目中刪減的文件路徑;該差量文件導(dǎo)出工具類(lèi)依據(jù)差量文件列表,在項(xiàng)目升級(jí)版本中找出差量文件,并另存在項(xiàng)目差量升級(jí)目錄中,且對(duì)于項(xiàng)目升級(jí)版本中不存在的源文件,記錄該文件路徑,以備后續(xù)差量升級(jí)中ANT遠(yuǎn)程刪除使用。
同步差量文件的過(guò)程為:
首先同步差量升級(jí)包至當(dāng)前項(xiàng)目;
然后清理項(xiàng)目冗余文件;
最后重啟服務(wù)完成項(xiàng)目升級(jí)。
同步差量升級(jí)包的過(guò)程為:通過(guò)ANT遠(yuǎn)程命令,拷貝基于當(dāng)前版本的差量升級(jí)包至項(xiàng)目運(yùn)行環(huán)境,替換項(xiàng)目目錄中已存在文件并添加新文件。
清理項(xiàng)目冗余文件的過(guò)程為:讀取該差量升級(jí)文件獲取項(xiàng)目中刪減文件,執(zhí)行ANT遠(yuǎn)程命令刪除當(dāng)前項(xiàng)目中冗余文件。
完成項(xiàng)目升級(jí)過(guò)程為:差量升級(jí)后,執(zhí)行ANT遠(yuǎn)程命令重啟項(xiàng)目所在應(yīng)用服務(wù)器,使得升級(jí)后的項(xiàng)目服務(wù)生效。
本發(fā)明的一種基于ANT的項(xiàng)目差量升級(jí)方法,具有以下優(yōu)點(diǎn):
本發(fā)明提供的一種基于ANT的項(xiàng)目差量升級(jí)方法,提供了解決現(xiàn)有項(xiàng)目全量升級(jí)及增量升級(jí)方案中耗時(shí)及文件冗余問(wèn)題的方法:首先通過(guò)緊密結(jié)合項(xiàng)目開(kāi)發(fā)的SVN環(huán)境,調(diào)用ANT的SVN版本比對(duì)命令,可快速獲取項(xiàng)目當(dāng)前版本與升級(jí)版本的差量文件列表進(jìn)而獲得差量升級(jí)所需文件;其次,在項(xiàng)目升級(jí)過(guò)程中基于差量文件列表對(duì)于增加的文件進(jìn)行添加,對(duì)于刪減的文件則執(zhí)行刪除處理,避免了現(xiàn)有增量升級(jí)方案中忽略對(duì)刪減文件的處理,導(dǎo)致項(xiàng)目中冗余文件不斷增加的后果;基于ANT的差量升級(jí)方法不僅保證了項(xiàng)目的快速升級(jí),而且通過(guò)對(duì)刪減文件(冗余文件)的處理實(shí)現(xiàn)了對(duì)項(xiàng)目的準(zhǔn)確同步,最終保障了項(xiàng)目穩(wěn)定可靠運(yùn)行,實(shí)用性強(qiáng),適用范圍廣泛,易于推廣。
附圖說(shuō)明
附圖1為本發(fā)明的實(shí)現(xiàn)示意圖。
附圖2為本發(fā)明中獲取差量文件過(guò)程圖。
附圖3為本發(fā)明中同步差量文件過(guò)程圖。
附圖4為差量文件導(dǎo)出工具類(lèi)工作原理圖。
具體實(shí)施方式
下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明作進(jìn)一步說(shuō)明。
為了解決項(xiàng)目全量或增量升級(jí)過(guò)程中的時(shí)效性及準(zhǔn)確性問(wèn)題。 本發(fā)明的一種基于ANT的項(xiàng)目差量升級(jí)方法,如附圖1所示,該方法包含如下三個(gè)方面:對(duì)項(xiàng)目增加的文件進(jìn)行添加,對(duì)項(xiàng)目刪減的文件進(jìn)行刪除,基于項(xiàng)目升級(jí)版本對(duì)項(xiàng)目當(dāng)前版本進(jìn)行同步。
其中對(duì)項(xiàng)目增加的文件進(jìn)行添加是指:利用ANT的SVN插件命令對(duì)項(xiàng)目升級(jí)版本和項(xiàng)目當(dāng)前版本執(zhí)行差異對(duì)比,對(duì)于增加文件以列表方式進(jìn)行記錄。
對(duì)項(xiàng)目刪減的文件進(jìn)行刪除是指:通過(guò)ANT的SVN插件命令對(duì)項(xiàng)目的升級(jí)版本和當(dāng)前版本執(zhí)行差異對(duì)比,對(duì)于刪減的文件以列表的方式進(jìn)行記錄。
基于項(xiàng)目升級(jí)版本對(duì)項(xiàng)目當(dāng)前版本進(jìn)行同步是指:通過(guò)對(duì)比出來(lái)的差量文件列表,對(duì)已有項(xiàng)目執(zhí)行文件添加或文件刪除,同步項(xiàng)目當(dāng)前版本至升級(jí)版本,完成項(xiàng)目升級(jí)。
如附圖2-圖4所示,其具體實(shí)現(xiàn)過(guò)程為:
首先基于項(xiàng)目SVN版本的對(duì)比獲取差量文件,即通過(guò)ANT的SVN插件命令對(duì)項(xiàng)目的升級(jí)版本和當(dāng)前版本執(zhí)行差異對(duì)比,獲取差量文件;
同步差量文件,基于上述獲取到的差量文件,對(duì)已有項(xiàng)目進(jìn)行同步,同步項(xiàng)目當(dāng)前版本至升級(jí)版本,完成項(xiàng)目升級(jí)。
在基于項(xiàng)目SVN版本的對(duì)比獲取差量文件之前還包括:
用戶確認(rèn)項(xiàng)目環(huán)境中使用SVN進(jìn)行版本管理且本地網(wǎng)絡(luò)與項(xiàng)目升級(jí)環(huán)境是連通的。
搭建ANT的SVN插件集成環(huán)境,ANT環(huán)境中確認(rèn)能正常運(yùn)行SVN服務(wù),否則進(jìn)行修復(fù)。
獲取差量文件的過(guò)程為:
首先獲取項(xiàng)目升級(jí)版本;
然后獲取項(xiàng)目升級(jí)版本與項(xiàng)目當(dāng)前版本差量文件列表;
最后獲取基于當(dāng)前版本的差量升級(jí)包。
獲取項(xiàng)目升級(jí)版本過(guò)程為:在ANT腳本中通過(guò)執(zhí)行SVN下載命令checkout命令,下載項(xiàng)目升級(jí)版本至本地目錄;編譯項(xiàng)目升級(jí)版本并將工程的class部分打包成jar庫(kù)以備后續(xù)差量文件編譯使用。
獲取項(xiàng)目升級(jí)版本與項(xiàng)目當(dāng)前版本差量文件列表過(guò)程為:在ANT腳本中通過(guò)執(zhí)行SVN比對(duì)命令獲取項(xiàng)目升級(jí)版本和項(xiàng)目當(dāng)前版本的文件差異列表,即差量文件列表,包含新增加文件及已修改文件。
獲取基于當(dāng)前版本的差量升級(jí)包的過(guò)程為:基于差量文件列表通過(guò)編寫(xiě)的差量文件導(dǎo)出工具類(lèi)導(dǎo)出差量文件并記錄項(xiàng)目刪減文件路徑至自定義的相關(guān)文件differential.del文件中,使用ANT編譯差量文件并生成相應(yīng)的壓縮包differential.zip壓縮包中。
在所述差量文件導(dǎo)出工具類(lèi)中:
輸入條件。輸入?yún)?shù)為:差量文件路徑,即通過(guò)執(zhí)行SVN比對(duì)命令獲取項(xiàng)目升級(jí)版本和項(xiàng)目當(dāng)前版本的差量文件列表中的文件路徑(基于項(xiàng)目的相對(duì)路徑)?;韭窂?,升級(jí)版本項(xiàng)目基本路徑與差量文件路徑一起構(gòu)成了項(xiàng)目中差量文件的絕對(duì)路徑。保存路徑,存放差量文件的新路徑,與差量文件路徑一起構(gòu)成了存放差量文件的絕對(duì)路徑。
輸出結(jié)果。輸出差量文件目錄(含差量升級(jí)文件)及項(xiàng)目中刪減的文件路徑。
核心邏輯。依據(jù)差量文件列表,在項(xiàng)目升級(jí)版本中找出差量文件,并另存在項(xiàng)目差量升級(jí)目錄中。對(duì)于項(xiàng)目升級(jí)版本中不存在的源文件,記錄該文件路徑,以備后續(xù)差量升級(jí)中ANT遠(yuǎn)程刪除使用。
同步差量文件的過(guò)程為:
首先同步差量升級(jí)包至當(dāng)前項(xiàng)目;
然后清理項(xiàng)目冗余文件;
最后重啟服務(wù)完成項(xiàng)目升級(jí)。
同步差量升級(jí)包的過(guò)程為:通過(guò)ANT遠(yuǎn)程命令,拷貝基于當(dāng)前版本的差量升級(jí)包differential.zip至項(xiàng)目運(yùn)行環(huán)境,替換項(xiàng)目目錄中已存在文件并添加新文件。
清理項(xiàng)目冗余文件的過(guò)程為:讀取該差量升級(jí)文件differential.del獲取項(xiàng)目中刪減文件,執(zhí)行ANT遠(yuǎn)程命令刪除當(dāng)前項(xiàng)目中冗余文件。
完成項(xiàng)目升級(jí)過(guò)程為:差量升級(jí)后,執(zhí)行ANT遠(yuǎn)程命令重啟項(xiàng)目所在應(yīng)用服務(wù)器,使得升級(jí)后的項(xiàng)目服務(wù)生效。
上述具體實(shí)施方式僅是本發(fā)明的具體個(gè)案,本發(fā)明的專(zhuān)利保護(hù)范圍包括但不限于上述具體實(shí)施方式,任何符合本發(fā)明的一種基于ANT的項(xiàng)目差量升級(jí)方法的權(quán)利要求書(shū)的且任何所述技術(shù)領(lǐng)域的普通技術(shù)人員對(duì)其所做的適當(dāng)變化或替換,皆應(yīng)落入本發(fā)明的專(zhuān)利保護(hù)范圍。