Intellij Idea IntelliJ和WAR....服务器无法自动识别更改的文件

92dk7w1h  于 12个月前  发布在  其他
关注(0)|答案(6)|浏览(114)

我正在使用Tomcat运行Intellij Ultimate并部署一个war。一切都部署到Tomcat的webapp目录中。
当我修改一个文件,比如一个xhtml文件时,有没有办法让tomcat自动获取这个修改?现在我需要从Intellij复制这个文件,然后把它复制到tomcat web app目录中它所在的目录。我知道有些文件需要重新编译,但是xhtmls不是其中之一。

2izufjch

2izufjch1#

如果使用IntelliJ IDEA部署战争,则无法执行此操作。但是,如果部署爆炸战争,则可以执行此操作。在IDEA中:
1.打开Tomcat运行/调试配置(* 运行>编辑配置 *)
1.转到“部署”选项卡
1.在“服务器启动时部署”部分中,删除工件my-webapp-name:war(如果存在
1.单击添加图标,选择“工件”,然后选择my-webapp-name:war exploded
1.单击“确定”(在“选择要部署的对象”对话框中)
1.仍然在“运行/调试配置”窗口中,选择“服务器”选项卡

  • 在该选项卡的中间,将“框架上停用”设置更改为“更新资源”或“更新类和资源”
    • 更新资源:* 将更新所有已更改的资源(即,除类之外的所有应用程序组件)。
    • 更新类和资源:* 所有更改的资源都将被更新;更改的类将被重新编译。请注意,是否更新实际的类取决于Web服务器的功能。如果我没记错,Tomcat将重新加载html/xhtml和jsp文件,但不会重新加载Servlet或JSP或Servlet使用的类。为此,您需要修改Tomcat以使用动态类加载器。
  • 您也可以将“On 'update'”(* 更新时 *)操作设置为上面所选的操作。
  • 这决定了当您在“运行”窗口中单击“更新x1c 0d1x”图标(或Ctrl+F10)时会发生什么。
  • “显示对话框”决定每次点击更新图标时IDEA是否提示您
  • 单击“确定”(OK)。

现在,当你做了更改,IDEA会在IDEA的框架被取消激活(即失去焦点)时重新部署更改的文件。这需要一两秒钟,你会在IDEA的状态栏中看到它。显然,你仍然需要刷新你的浏览器,以便它获取新文件(当然,除非页面有像fetch这样的ajax自动刷新)。
与Tomcat的一个很好的组合是将“On frame deactivation”设置为“Update Resources”,并将“On 'update' action”设置为“Redeploy”或“Restart Server”。这样可以通过框架停用快速更新静态页面,并通过'update' action更新类。
一家名为ZeroTurnaround的公司销售JRebel,这是一个动态类加载器解决方案。他们也有一个非常好的five part series on the subject

rslzwgfq

rslzwgfq2#

让我用屏幕截图来描述操作顺序:
1.打开您的Tomcat运行/编辑配置(运行>编辑编辑配置)
x1c 0d1x的数据
1.单击添加图标,选择“工件”,然后选择pizza_mvc:war exploded

1.修改“更新操作时”和“帧停用时”:

1.每次要刷新资源时,请按<Ctrl> + F10

ycggw6v2

ycggw6v23#

如果要更新类和资源,请在 * 切换模式 * 下运行 Tomcat。在此模式下,IntelliJ更新类和资源没有问题(热插拔)。
同样的问题。IntelliJ没有更新我的项目,因为我以“运行模式”运行。当我以 * 调试模式 * 运行并按Ctrl+F10时,它更新类和资源。

wgx48brx

wgx48brx4#

我找到了更好的办法。
Eclipse中,我们可以自动构建、编译和重新加载静态文件。实际上,静态文件直接从src/main/webapp提供。
IntelliJ中,不是直接从src/main/webapp提供服务,而是在target中创建了一个文件夹,在其中您将拥有src/main/webapp的副本以及其他上下文相关的.. web-inf/classes /lib。
如果你把分解后的工件的输出放在src/main/webapp而不是target,它不会覆盖你的源文件,它会直接服务,你不必点击-更新资源/更新资源和类
所以你需要在IntelliJ中做的是
1.将分解工件输出目录修改为src/main/webapp x1c 0d1x
1.创建一个宏用于保存和重新编译/编译脏类(cmd+shift+f9)

x 1c 2d 1x
1.编辑注册表和首选项以自动构建并在应用程序运行时构建(cmd+shift+a - registry).

x 1c 4d 1x
在此之后,如果您有从IntelliJ外部更改静态文件的作业,您将立即看到更改,而无需转到IntelliJ和更新资源,并且对于您拥有保存和编译的宏的类(注意:你也可以点击编译/重新编译:cmd + Shift + F9 / cmd + F9 -如果你有多个打开的编辑器,你的dirty * 编辑器将是非dirty的,并且更改(类)将被重新加载)

sg3maiej

sg3maiej5#

只有当你部署了exploited war文件夹,启用了热重载,并在调试模式下启动tomcat时,这才是可能的。
这些是实现这一目标的步骤。
1.打开您的Tomcat运行/编辑配置(运行>编辑编辑配置)
1.转到“Deployment”选项卡3.在“Deploy at Server Startup”部分中,删除(如果存在)工件my-webapp-name:war
1.点击添加图标,选择“artifact”,然后选择my-webapp-name:war exploited
1.单击“确定”(在“选择要部署的对象”对话框中)
1.仍然在“运行/调试配置”窗口中,选择“服务器”选项卡
1.将“On frame Deactivation”和“On Update Action”设置更改为“Update classes and resources”
1.应用并保存
1.通过单击文件然后单击设置或按CTRL + ALT + S转到正常项目设置
1.后藤“构建、执行、部署”
1.编译器
1.选择自动生成项目
1.保存
1.在调试模式下启动tomcat

zqry0prt

zqry0prt6#

如果你有多部分文件,你想立即查看/播放,直接上传到目标文件夹。*(只更改写入位置到目标文件夹/static/)

String yourpath = C\\andSoForth
    yourPath + "\\target\\classes\\static\\uploads\\audiofiles\\"

字符串
您将能够立即查看文件,而无需重新启动IDE

相关问题