我正在使用Tomcat运行Intellij Ultimate并部署战争。一切都很好地部署到tomcat的webapp目录。
当我更改像xhtml文件这样的文件时,有没有办法让tomcat自动获取该更改?到目前为止,我需要从intellij复制文件并将其复制到tomcat webapp目录中的目录。我知道某些文件需要重新编译,但xhtml不是其中之一。
答案 0 :(得分:268)
如果使用IntelliJ IDEA部署战争,则无法执行此操作。但是,如果部署爆炸战争,可以。在IDEA:
my-webapp-name:war
my-webapp-name:war exploded
现在,只要您进行更改,IDEA将在IDEA的帧停用(即失去焦点)时重新部署更改的文件。确实需要一两秒钟,你会在IDEA的较低状态栏中看到它。明显。你仍然需要刷新你的网络浏览器,以便它获取新文件(当然,除非页面有像aetch一样的ajax自动刷新)。
与Tomcat的良好结合是将“On frame deactivation”设置为“Update Resources”,将“On'update”操作设置为“Redeploy”或“Restart Server”。这样可以通过框架快速更新静态页面停用,并通过“更新”操作更新课程。
名为ZeroTurnaround的公司销售JRebel,这是一个动态的类加载器解决方案。他们也有five part series on the subject非常好。
答案 1 :(得分:17)
让我用截图描述一系列动作:
答案 2 :(得分:11)
如果要更新类和资源,请在调试模式中运行 Tomcat 。在此模式下 IntelliJ 更新类和资源没有问题(热插拔)。
遇到同样的问题。 IntelliJ 没有更新我的项目,因为我以"运行模式"运行。当我在调试模式中运行并按 Ctrl + F10 时,它会更新类和资源。
答案 3 :(得分:1)
我找到了更好的方法。
在 Eclipse 中,我们自动构建,编译+重新加载静态文件。实际上,静态文件直接来自 src / main / webapp 。
在 IntelliJ 中,而不是直接从 src / main / webapp 投放,在目标中创建了一个文件夹,您将在其中获得的副本src / main / webapp 以及其他相关的上下文.. web-inf / classes / lib。
如果您将爆炸工件的输出替换为目标 src / main / webapp ,它将不会覆盖您的源文件,它将直接提供,您赢了&#39 ;必须点击 - 更新资源/更新资源和类
所以你需要在IntelliJ中做什么
答案 4 :(得分:0)
只有在部署爆炸的war文件夹,启用热重载并以调试模式启动tomcat时,这才有可能。
这些是实现这一目标的步骤。
答案 5 :(得分:0)
如果您有要立即查看/播放的多部分文件,请直接上传到目标文件夹中。 *(仅将写入位置更改为目标文件夹/静态/)
String yourpath = C\\andSoForth
yourPath + "\\target\\classes\\static\\uploads\\audiofiles\\"
您将能够立即查看文件,而无需重新启动IDE