我正在用 Tomcat 运行 Intellij Ultimate 并部署一场战争。所有内容都部署到 tomcat 的 webapp 目录中。
当我更改像 xhtml 文件这样的文件时,是否有一种方法可以让 tomcat 自动获取这种更改?从现在开始,我需要从 Intellij 复制这个文件,并将它复制到 tomcat web app 目录下它所在的目录下。我知道有些文件需要重新编译,但 xhtml 不在其中。
如果您使用 IntelliJIDEA 部署一场战争,这是不可能完成的。但是,如果部署 爆发了战争,则为 可以。在《创意》中:
my-webapp-name:war
my-webapp-name:war exploded
现在,每当您进行更改时,当 IDEA 的帧被停用(即失去焦点)时,IDEA 将重新部署更改后的文件。它确实需要一两秒钟,您将在 IDEA 的下面的状态栏中看到它。很明显。你仍然需要刷新你的网页浏览器来获取新的文件(当然,如果页面有一个自动的 ajax 刷新,如提取)。
与 Tomcat 的一个很好的组合是将“ On frame disactivation”设置为“ Update Resources”,并将“ On‘ Update’操作设置为“重新部署”或“ Restart Server”。这允许静态页面通过帧停用快速更新,类通过“更新”操作更新。
一家名为 ZeroTurnaround 的公司销售 JRebel,这是一个动态类加载器解决方案。他们还有一个非常好的 关于这个主题的五部分系列。
让我来描述一下使用屏幕截图进行操作的顺序:
单击添加图标,选择“工件”,然后选择 pizza_mvc:war exploded:
pizza_mvc:war exploded
修改“更新操作”和“关闭帧”:
每次要刷新资源时,请按 <Ctrl> + F10
<Ctrl> + F10
如果要更新类和资源,请在 调试模式中运行 雄猫。在这种模式下,情报更新类和资源没有问题(热交换)。
我也有同样的问题。情报没有更新我的项目,因为我以“运行模式”运行。当我运行 调试模式并按下 Ctrl + F10时,它会更新类和资源。
我找到了更好的方法。
在 日食中我们自动构建、编译 + 重载静态文件。实际上静态文件是直接从 Src/main/webapp中提供的。
在 情报中,不是直接从 Src/main/webapp提供服务,而是在 target 中创建一个文件夹,其中将包含 Src/main/webapp的副本以及其他相关上下文。.Web-inf/class/lib.
如果您将爆炸工件的输出放到 Src/main/webapp而不是目标,它将不会覆盖您的源文件,并且它将直接服务于您的 就不用打了-更新资源/更新资源和类
所以在 IntelliJ 中你需要做的是
在这之后,如果你的作业改变了 IntelliJ,您将立即看到更改,而不需要访问 IntelliJ 和 Update 参考资料之外的静态文件,对于那些你有宏保存和编译的类(注意: 你也可以点击编译/重新编译: cmd + shift + F9/cmd + F9-如果你有多个打开的编辑器将看到你的脏 * 编辑器将是非脏的,并且改变(类)将被重新加载)
这只有在您部署爆炸的 war 文件夹、启用热重载并在调试模式下启动 tomcat 时才可能实现。
以下是实现这一目标的步骤。
如果您有多部分文件要立即查看/播放,请直接上传到 targetfile。* (只将写入位置更改为目标文件夹/static/)
String yourpath = C\\andSoForth yourPath + "\\target\\classes\\static\\uploads\\audiofiles\\"
您将能够立即查看您的文件,而不必重新启动 IDE