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