之前推出了局部打包的工具,在低版本时对环境有一定的依赖,在最近推出的 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