我希望能够在Eclipse中开发时,能够将代码更改快速部署到Tomcat(几乎瞬间完成)。
到目前为止,我的Eclipse输出已将构建的类放置在Web应用程序的WEB-INF/classes
文件夹中。
我还有一个可重新加载的上下文,将web.xml
作为监视资源。对此文件进行任何编辑/保存都会重新加载我的Web应用程序,只需一秒多一点的时间 - 比完全构建新的war文件并部署它要快得多。
然而,我想做的是在编辑任何源文件时触发重新部署。由于.class文件正在Tomcat中被修改,因此似乎我只需要监视WEB-INF/classes
文件夹及其子文件夹中的任何更改即可。
我已经阅读过可以在Tomcat的context.xml
中添加其他监视资源,但这似乎不是我所需要的 - 除非可以指定要监视的目录(包括递归监视子文件夹和文件)?
<Context>
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>WEB-INF/someother.file</WatchedResource>
<Manager pathname=""/>
</Context>
因此,我的问题基本上是,我是否可以观看整个classes文件夹(而不需要显式包括每个
WatchedResource
),以触发Tomcat的重新部署?如果不能,我能否配置Eclipse在保存该项目中的源文件时“touch”web.xml文件?我正在Windows系统上开发。 :(
PS我对JRebel产品不感兴趣。任何答案都应该是免费的解决方案。
更新
根据Tomcat文档的说明,应通过将上下文设置为可重新加载来监视classes文件夹:
如果要让Catalina监视/WEB-INF/classes/和/WEB-INF/lib中的类以进行更改,并在检测到更改时自动重新加载Web应用程序,则设置为true。
只有对web.xml的更改似乎会触发重新加载。 这是一个错误还是我的设置不正确?
此外,我已经阅读了有关为给定上下文设置docBase
属性的内容:
docBase="webapps/someExample"
这似乎接近我所需的,因为我可以快速在Eclipse中重新发布。我的唯一问题是,我需要同时在同一端口上运行几个Web应用程序/ servlets。