我正在使用 Tomcat 运行 Intellij Ultimate 并部署战争。一切都很好地部署到了 tomcat 的 webapp 目录。
当我更改像 xhtml 文件这样的文件时,tomcat 有没有办法自动获取该更改?截至目前,我需要从 Intellij 复制文件并将其复制到它位于 tomcat Web 应用程序目录中的目录。我知道有些文件需要重新编译,但 xhtmls 不是其中之一。
我正在使用 Tomcat 运行 Intellij Ultimate 并部署战争。一切都很好地部署到了 tomcat 的 webapp 目录。
当我更改像 xhtml 文件这样的文件时,tomcat 有没有办法自动获取该更改?截至目前,我需要从 Intellij 复制文件并将其复制到它位于 tomcat Web 应用程序目录中的目录。我知道有些文件需要重新编译,但 xhtmls 不是其中之一。
如果您使用 IntelliJ IDEA 部署战争,则无法做到这一点。但是,如果您部署了爆炸式战争,则可能会发生这种情况。在想法中:
my-webapp-name:war
my-webapp-name:war exploded
现在,只要您进行更改,当 IDEA 的框架被停用(即失去焦点)时,IDEA 将重新部署更改的文件。它确实需要一两秒钟,您会在 IDEA 的下方状态栏中看到它。明显地。您仍然需要刷新您的网络浏览器,以便它获取新文件(当然,除非该页面具有自动刷新 ajax 之类的功能)。
与 Tomcat 的一个很好的组合是将“On frame deactivation”设置为“Update Resources”,并将“On 'update' action 设置为“Redeploy”或“Restart Server”。这允许通过 frame deactivation 快速更新静态页面,并且通过“更新”操作更新的类。
一家名为 ZeroTurnaround 的公司销售JRebel,它是一种动态类加载器解决方案。他们也有一个非常好的主题的五部分系列。
如果要更新类和资源,请在调试模式下运行Tomcat。在这种模式下, IntelliJ可以毫无问题地更新类和资源(热交换)。
遇到同样的问题。IntelliJ没有更新我的项目,因为我以“运行模式”运行。当我在调试模式下运行并按Ctrl+F10时,它会更新类和资源。
我找到了更好的方法。
在Eclipse中,我们自动构建、编译 + 重新加载静态文件。实际上静态文件是直接从src/main/webapp提供的。
在IntelliJ中,不是直接从src/main/webapp提供服务,而是在 target 中创建了一个文件夹,您将在其中拥有src/main/webapp以及其他与上下文相关的 .. web-inf/classes /lib 的副本。
如果您将爆炸工件的输出而不是目标放置到src/main/webapp,它不会覆盖您的源文件,而是直接提供服务,您不必点击-更新资源/更新资源和类
所以你需要在 IntelliJ 中做的是
在此之后,如果您有从 IntelliJ 外部更改静态文件的作业,您将立即看到更改,而无需转到 IntelliJ 和 Update Resources,并且对于您拥有保存和编译的宏的类(注意:您也可以直接点击 Compile /重新编译:cmd + shift + F9 / cmd + F9 - 如果你有多个打开的编辑器会看到你的脏 * 编辑器将是非脏的,并且更改(类)将被重新加载)
这只有在您部署分解的战争文件夹、启用热重载并在调试模式下启动 tomcat 时才有可能。
这些是实现这一目标的步骤。
如果您有想要立即查看/播放的多部分文件,请直接上传到目标文件夹。*(仅将写入位置更改为目标文件夹/static/)
String yourpath = C\\andSoForth
yourPath + "\\target\\classes\\static\\uploads\\audiofiles\\"
您将能够立即查看您的文件,而无需重新启动您的 IDE