我正在运行Intellij Ultimate和Tomcat并部署战争。一切都部署到tomcat的webapp目录。IntelliJ和Tomcat ....更改的文件不会被Tomcat自动识别
当我像xhtml文件一样更改文件时,有没有办法让tomcat自动获取该更改?截至目前,我需要从intellij复制文件,并将其复制到它所在tomcat webapp目录中的目录。我知道某些文件需要重新编译,但是xhtml不是其中之一。
我正在运行Intellij Ultimate和Tomcat并部署战争。一切都部署到tomcat的webapp目录。IntelliJ和Tomcat ....更改的文件不会被Tomcat自动识别
当我像xhtml文件一样更改文件时,有没有办法让tomcat自动获取该更改?截至目前,我需要从intellij复制文件,并将其复制到它所在tomcat webapp目录中的目录。我知道某些文件需要重新编译,但是xhtml不是其中之一。
如果您使用IntelliJ IDEA部署战争,则无法完成此操作。但是,如果你部署了爆炸战,它可以可以。在IDEA:
my-webapp-name:war
my-webapp-name:war exploded
现在无论何时您进行更改,IDEA都会在IDEA框架停用时重新部署更改的文件(即,失去了重点)。这需要一两秒钟,您会在IDEA中较低的状态栏中看到它。明显。你仍然需要刷新你的网页浏览器,以便获取新文件(除非页面有像提取那样的自动刷新Ajax)。
与Tomcat的良好结合是将“On frame deactivation”设置为“Update Resources”并将“On'update'操作设置为”重新部署“或”重新启动服务器“。帧失活,和阶级通过“更新”行动更新。
名为ZeroTurnaround一个公司销售JRebel这是一个动态的类加载器的解决方案。他们也有five part series on the subject这是非常好的。
如果要更新类和资源。在“调试模式”下运行Tomcat。此模式下的InteliJ更新没有问题类和资源。
得到同样的问题。 InteliJ没有更新我的项目,因为我以“运行模式”运行。当我在调试模式下运行并按Ctrl + F10,它更新类和资源。
我找到了更好的方法。
在Eclipse我们已经自动编译+重新加载静态文件。实际上,静态文件直接从src/main/webapp提供。
在的IntelliJ,而不是直接从SRC服务/主/ web应用,则在目标创建的文件夹,在其中你将有你的的src/main/webapp的以及其他方面相关的副本.. web-inf/classes/lib。
如果你把而不是目标的爆炸神器的输出的src/main/webapp的,它不会覆盖你的源文件,它将直接服务,您不会有打 - 更新资源/更新资源和类
所以,你需要的IntelliJ做的是
在此之后,如果您有来自的IntelliJ外部改变的静态文件的作业,你会马上看到变化,而不去的IntelliJ和更新资源,而对于类你有宏,节省,并编译(注意:你也可以点击Compile/Recompile:cmd + shift + F9/cmd + F9 - 如果你有多个打开的编辑器会看到你的脏编辑器不会变脏,并且变化重新加载)
看来,如果你有注册表compiler.automake ..启用它只推命中保存你的更改。 –
谢谢。这个伎俩。我是新的Stackoverflow,所以我不知道如何把它作为一个回答的问题。 – Peter
我有错误:'错误:神器'我的webapp名称:战争爆炸'具有无效的扩展名'如何解决? –
我也强烈建议使用DCEVM进行自动类重装。然后,您可以使用“更新类和资源”将所有更改应用于源代码,而无需重新部署应用程序。请参阅:http://blog.jetbrains.com/idea/2013/07/get-true-hot-swap-in-java-with-dcevm-and-intellij-idea/。除了本教程解释的内容之外,还需要在Tomcat运行配置的Setup/Connection - Debug选项卡中将JAVA_HOME设置为指向DCEVM的JRE。 –