如何更新war文件中的单个文件

zig*_*ggy 1 tomcat

我正在研究我可以使用war文件有效部署应用程序的方式.我目前所做的是每次发布时都会发送war文件.

这意味着每当有变化时,无论我需要构建和交付构成应用程序的所有文件的变化有多小.我在想,也许这不是正确的方法.

例如,如果对css文件进行了更改,则必须重建包含所有文件的war文件.这包括重新编译所有*.java文件.

在上面的例子中,是否可以仅使用css文件构建war文件并将其部署到tomcat服务器并让Tomcat只替换css文件并保留其他所有内容?

Pet*_*ans 5

您可以执行"爆炸"部署,这只是解压缩的war文件.然后,您可以更新单个文件.为此,您将"解压缩"目录放在您希望拥有war文件的位置.如果你使用tomcat并查看deploy目录,你会发现这就是tomcat所做的事情.

但不保证会更改这些更改.CSS文件和图像以及其他应该没有问题,但是JSP,模板文件等往往会被编译和缓存,你必须做一些配置魔术才能让应用程序替换这些工件.通常,这会带来性能成本,并且在替换类但不从内存中释放时可能会导致Dreaded PermGen错误.如果这样做,请确保在好的时刻定期弹出服务器,并使用virtualvm或jconsole或类似工具密切关注PermGen内存区域.