局部更新 java web 的文件
方法一:直接更新文件
直接修改部署后的文件。比如用 maven 打包成 WAR 文件,部署(复制)到 Tomcat/webapps 目录后,Tomcat 会立即将 WAR 文件解压成目录结构。此时,只需进入目录修改对应的文件就可以了。
修改 Tomcat 解压出来的文件,可能需要 root 权限。
参考资料:
Servlets Demystified in Chapter 1 of Head First Servlet & JSP
方法二:更新线上运行中 WAR, EAR 包里的个别文件
大型 web 应用的编译是很耗时间的,将编译后的包部署到 web server 上面可能也要很久。
有时候只是修改了一个静态文件,如 html, css, jpg,这些修改是无需编译的。如果将整个 web 项目重新编译、部署使得变动生效,工作效率会很低。
如何将改动的静态文件直接更新(替换)到线上 WAR/EAR 呢?
可以使用命令
jar uf jar-file input-file(s)
解释:
u - 表示你想要更新一个已存在的 JAR 文件
f - 表示需要更新的文件在命令行中指定
jar-file - 需要更新的已存在的 JAR 包
input-files(s) - 一个或多个需要更新(新增)的文件名,多个文件之间用空格隔开
JAR 包中和 input-file(s) 同名的文件会被覆盖点。
例子:
已知 TicTacToe.jar 内容如下:
audio/yahoo2.au example1.html images/ images/cross.gif images/not.gif
新增文件 new.gif
jar uf TicTacToe.jar images/new.gif
更新后 TicTacToe.jar 内容如下:
audio/yahoo2.au example1.html images/ images/cross.gif images/not.gif images/new.gif
参考资料 :