1. 程式人生 > >Play1.2.7 完整打包,超級縮短完整打包所耗費的時間

Play1.2.7 完整打包,超級縮短完整打包所耗費的時間

之前推出了局部打包的工具,在低版本時對環境有一定的依賴,在最近推出的 4.1.0 版本中`,有些朋友發現採用區域性工具打包後沒有產生預編譯後的HTML檔案,此方式在公司也試用了段時間,穩定執行,想想也差不多可以抽時間分享並給大家講解下了。

閒話少說,進入思考模式

Q:為什麼推出全量打包?

A:採用區域性打包後,總會有些奇怪的問題產生,重新全量打包後,又消失了。發生幾次後,總監發怒啦,要求全量打包,想想檔案多了後打全量得20多分鐘啊,難受,想苦啊,然後心底裡就有了快速全量打包的主意。

Q: 快速全量打包的思路?

A:1.看過預編譯檔案內容的朋友都知道這是加密的,那麼是否可在底層處理,打包時不加密,使用時不解密。此思路看似簡單,深似水啊。搞了幾個週末以失敗告終

    2.取消打包Html檔案(在之前的試驗中,因Html檔案多,編譯時間過長);

      按此思路尋找原始碼,上天不負苦心人啊,找到了線索,原來預編譯檔案找不到是支援動態編譯的


階段一,初步版本:打包Html時,全部跳過去,不處理Html檔案的編譯,刪除開發、測試、生產環境的 precompiled/templates

play.templates.TemplateLoader#getAllTemplate 修改此檔案後,替換初始Jar包中的此 Class 類 (不想改的同學可直接使用區域性打包工具4.1.0 中的,階段三有地址)


TemplateLoader.load(play.vfs.VirtualFile)

階段二,進一步縮短時間:

    使用階段一後,確實縮短了大量的時間,但play準備war包的時間,還得好幾分鐘,重點上傳至伺服器時,大包,又得多耗費不少時間

    因日常使用,我們都不會去上傳整個WAR包,主要是java html js css 等檔案,有興趣的朋友可做如下改動

 1.採用直接命令打包,不使用Play包裝後的編譯模式

 2.打包成功後,自己寫指令碼組裝升級包,減少包的大小


階段三:升級現有的區域性打包工具,相容最新方案的實施

http://download.csdn.net/detail/fasttime/9687854 

play1.2.7 區域性更新包生成器_4.1.0 

注:

    開發、測試環境可使用區域性打包工具,生產環境不建議使用區域性打包。


2017012更新 windows下使用說明 (有興趣的可整合至 linux 中,配合 jenkins 使用):

1. play-1.2.7.jar (3rd_tools中有) 替換本地的 play jar

2.替換以下命令,切記:是全量替換

a) java -javaagent:D:\develop\java\play_framework\play-1.2.7/framework/play-1.2.7.jar -Dprecompile=yes -DskipTemplates=true -XX:-UseSplitVerifier -Dfile.encoding=utf-8 -XX:CompileCommand=exclude,jregex/Pretokenizer,next -Xdebug -Xrunjdwp:transport=dt_socket,address=0,server=y,suspend=n -Xms256m -Xmx512m -XX:PermSize=256M -XX:MaxPermSize=512m -Dplay.debug=yes -classpath D:\develop\workspace\framework_play\framework_play/conf;D:\develop\java\play_framework\play-1.2.7/framework/play-1.2.7.jar;D:\develop\workspace\framework_play\framework_play/lib/*;D:\develop\java\play_framework\play-1.2.7/framework/lib/*; -Dapplication.path=D:\develop\workspace\framework_play\framework_play -Dplay.id='' play.server.Server

b) D:\develop\java\play_framework\play-1.2.7/framework/ 替換成你本地的Play路徑

c) D:\develop\workspace\framework_play\framework_play 替換成你本地的專案路徑

3. cmd 視窗中,執行第二步的命令(替換路徑後的命令)注:java環境變更需要是1.6 版本

4.打包完後在 D:\develop\workspace\framework_play\framework_play\precompiled  找到預編譯檔案。注:執行第三步後,只會生成 precompiled \java 目錄,如存在 precompiled/templates 請刪除

5.手工選擇資源進行壓縮升級包,注:採用此方式第一次部署時,一定要刪除原來的 precompiled/templates 目錄,後續此方式打包更新,都不會存在 precompiled/templates 目錄

6.針對此更新方式的區域性更新生成器下載下址:

a) http://download.csdn.net/detail/fasttime/9687854