我的maven项目被配置为在本地glassfish服务器上运行。当我对Java类或JSP文件进行任何更改时,它都会自动部署。
但是,如果我将同一个项目配置为在远程服务器上运行,当我点击保存按钮时,它不会自动部署任何内容,我必须手动点击"运行"按钮。
我做错了什么吗?
谢谢!
不是这样的。
热代码替换在IDE中工作,因为它可以控制java进程和类加载。一旦在远程机器上,进程就不能再由IDE控制了。
根据您使用的框架(Spring、JPA…),即使是热代码替换也可能不会产生预期效果,因为这些框架需要在启动期间初始化。
JDK本身只支持某种更改。签名更改通常不会重新加载或添加静态方法。
如果您需要更好的热代码重新加载支持,您可以尝试JRebel。它是一个商业工具,但它支持更多的重载变体,也有一些框架支持。
我也读过一些公司在生产服务器上使用它的报道。
与maven相关,您只需要注意,如果maven部署.war或.ear文件,它也不受IDE的控制(或者有更强的限制)。这通常是让IDE在本地完成工作的最佳方式。