我可以编写一个ant脚本,将更新的类文件复制到tomcat中的web-inf\classes
。但是我怎么能告诉Tomcat 7.0自动从web-inf/classes
目录中选取已更改的类文件?如何在tomcat中启用热部署
我尝试在tomcat主机配置server.xml
中设置autoDeploy="true"
,但是当检测到更改时,Tomcat会话被销毁。 我可以很容易地在的IntelliJ
我可以编写一个ant脚本,将更新的类文件复制到tomcat中的web-inf\classes
。但是我怎么能告诉Tomcat 7.0自动从web-inf/classes
目录中选取已更改的类文件?如何在tomcat中启用热部署
我尝试在tomcat主机配置server.xml
中设置autoDeploy="true"
,但是当检测到更改时,Tomcat会话被销毁。 我可以很容易地在的IntelliJ
我结束了使用HotSwapAgent tool。这是JRebel的免费替代方案
的Tomcat只能热插拔某些类型的文件,如JSP,和静态文件如JavaScript,CSS等,如果你turn off cacheing但不能热插拔的Java类,只有重新启动Web应用程序。为了实现热插拔Java类,我在任何地方都看到了JRebel广告,但没有尝试过他们的产品。
但是,您可以通过注释掉一条指令来保存Tomcat会话,如Tomcat文档站点中所述:http://tomcat.apache.org/tomcat-7.0-doc/config/manager.html#Disable_Session_Persistence。
最后,您可以编写ANT脚本来组装WAR并在每次脚本执行时重新部署。
例的build.xml:
...
<target name="tomcat-stop">
<exec executable="${server.home}/bin/catalina.bat">
<arg value="stop"/>
</exec>
</target>
<target name="tomcat-start">
<exec executable="${server.home}/bin/startup.bat">
<arg value="start"/>
</exec>
</target>
...
<target name="all" depends="tomcat-stop,clean,init,compile,junit-slow,make_war,deploy,tomcat-start"></target>
在任何合并,我会避免使用Eclipse Tomcat插件有两个原因。
显然,另一种选择是使用jetty(例如,在开发过程中),它可以更轻松地进行热切换。
另请参见https://stackoverflow.com/a/6584259/32453 – rogerdpack