play framerowk 1.2.7 多种打包(预编译)方式

20161120备注:

play1.2.7 局部更新包生成器_4.1.0 http://download..net/detail/fasttime/9687854 这个版本解决了依赖于 jdk 以及 play 环境的问题。 注:下载过的老用户,没有积分的话,请邮件向我索取新版本,我将单独发送。

1.play 提供的 play 命令打包(相以路径以及绝对路径都可以,目前也是网上流传最广的方式)

play war ${path_project} --exclude .svn:target:logs:tmp -o ${path_war}

2.修改 eclipe 中的启动文件属性eclipse/*.launch 中的最后一条:加入参数 -Dprecompile=yes 将会在启动项目时,进行项目的预编译

(将在项目中生成 precompiled 文件夹,包含java 及 templates 文件夹)

<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dprecompile=yes -Dplay.debug=yes -Dplay.id= -Dapplication.path=&quot;${project_loc:zhongchou}&quot; -Djava.endorsed.dirs=&quot;D:developjavaplay_frameworkplay-1.2.7/framework/endorsed&quot; -javaagent:&quot;D:developjavaplay_frameworkplay-1.2.7/framework/play-1.2.7.jar&quot;"/>`

3.命令方式直接打包及预编译,可避开 play 的前置检查

D:developjavajdkjdk1.6injava -javaagent:D:developjavaplay_frameworkplay-1.2.7framework/play-1.2.7.jar -Dprecompile=yes -XX:-UseSplitVerifier -Dfile.encoding=utf-8 -XX:CompileCommand=exclude,jregex/Pretokenizer,next -Xdebug -Xrunjdwp:transport=dt_socket,address=0,server=y,suspend=n -Dplay.debug=yes -classpath D:developworkspaceframework_playframework_playconf;D:developjavaplay_frameworkplay-1.2.7frameworkplay-1.2.7.jar;D:developworkspaceframework_playframework_playlib*;D:developjavaplay_frameworkplay-1.2.7frameworklib*; -Dapplication.path=D:developworkspaceframework_playframework_play -Dplay.id= play.server.Server

注:

第 1 种原生的 play 提供的打包命令适用于第一次部署的情况(整体更新)

第 2 3 种则是适用于,选择性的替换预编译后的文件(局部更新,快速打包 文章介绍: http://blog..net/fasttime/article/details/50813286)

第 2 种方式可在 play 的源码类 Play.java 中得知

第 3 种方式可从入口 play.bat 中 的前置检查 python 源码中得知,最后调用的还是 java 命令拉起预编译及打包的

(有兴趣的朋友可在play 的前置检查 python 源码中加输出信息或看调源码来跟踪,若有更好的跟踪方式请多指教)
经验分享 程序员 微信小程序 职场和发展