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