Eclipse如何取消Tomcat热部署

楼主的开发环境是Eclipse 4.11.0,装的Tomcat版本是7.0,在每次修改了类文件后,Tomcat貌似都会重新加载一次项目(在Console窗口会出现下图的提示),感觉这样太影响开发效率了,上网查了一下,很多人提出两种方式:1.取消Tomcat 属性页面的Server Options内的自动装载选项Modules auto reload by default;2.修改server.xml文件内Context的reloadable属性为false。

Eclipse如何取消Tomcat热部署

经过测试,单独采用方法1并没有效果,而方法2虽然禁止了项目自动加载,但每次修改后想要更新都得restart一次tomcat。这里先给出楼主测试的解决方法,具体解释后面说:

1.关掉Server Options中的自动加载选项(虽然没用,但还是关掉放心)

2.server.xml中的reloadable属性设为true

3.将Publishing中的默认选项改为第一项Nerver publish automatically

4.修改java类后,右键tomcat服务器,选择publish。(注意,除了修改类以外,添加任何新的文件也需要publish)

Eclipse如何取消Tomcat热部署


这里是上述方法的一些解释:

首先,在Tomcat页面中有一个设置是Publishing,在里面可以看到默认配置如下图,如果想要取消热部署,就需要在这里更改设置。对应的选项含义:

1.从不自动发布项目;

2.任意资源更改后自动发布项目;

3.修改了资源文件,点击保存后,自动发布项目;

Eclipse如何取消Tomcat热部署

根据楼主理解,这里才是控制Tomcat是否自动加载项目的地方,但要注意,这里的2、3的自动发布选项,仅当server.xml中你的项目对应的<context>节点的<reloadable>属性为true时才会生效。(即第二步,一般默认的都是true)

Eclipse如何取消Tomcat热部署

如果你的server.xml里配置如上图所示,那么这里publishing不管设置为哪一个,tomcat都不会自动帮你发布项目,即使在tomcat上右键点击publish,也是没有任何效果的,只能restart了。

说到这里,对于网上关于右键选项中Publish和Clean的区别(即有些说法指出,若要更新删除某个类的操作时,要通过Clean来实现),楼主经过测试,通过publish是可以更新删除操作的(所以Clean操作把所有东西删掉重新发布有什么意义呢)。

至此,tomcat的自动装载项目就解决了,但Modules auto reload by default和publishing之间有什么区别还不太理解,望大佬留言解答。