Maven Web项目在IntelliJ IDEA中如何热重载Java类
解决IntelliJ IDEA中Maven tomcat7:run Debug模式下代码修改不生效的问题
我完全理解这个功能对你的重要性——毕竟调试时频繁重启服务太浪费时间了。其实这个问题在IDEA里很常见,因为它和Eclipse对Tomcat的集成逻辑不一样,不过几个简单的配置就能搞定:
1. 开启IDEA自动编译及运行时自动构建
首先得让IDEA在应用运行时也能自动编译修改后的代码:
- 打开
Settings(快捷键Ctrl+Alt+S),导航到Build, Execution, Deployment > Compiler,勾选Build project automatically。 - 接着按
Ctrl+Shift+A打开搜索框,输入Registry并打开,找到compiler.automake.allow.when.app.running选项并勾选它。这一步是允许IDEA在应用运行时自动编译代码。
2. 配置Maven Tomcat7插件的热部署参数
在你的pom.xml中,给tomcat7-maven-plugin添加热部署相关配置,让Tomcat能检测到代码变化并重新加载:
<plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <port>8080</port> <!-- 你的Tomcat端口 --> <path>/your-app-context</path> <!-- 你的应用上下文路径 --> <!-- 开启上下文自动重载 --> <contextReloadable>true</contextReloadable> <!-- 指定War包目录,确保编译后的类能被Tomcat识别 --> <warSourceDirectory>${project.build.directory}/${project.build.finalName}</warSourceDirectory> </configuration> </plugin>
3. 调整Debug运行配置的更新策略
最后,修改IDEA的Debug运行配置,让它能在代码修改后自动同步到运行中的Tomcat:
- 打开
Run > Edit Configurations,找到你用来启动tomcat7:run的Maven配置。 - 在右侧面板的
On 'Update' action下拉框选择Update classes and resources,On frame deactivation下拉框选择Update resources。- 前者是当你手动点击工具栏的"Update"按钮(或按
Ctrl+F10)时,更新类和资源;后者是当你切换出IDEA窗口时,自动更新资源文件。
- 前者是当你手动点击工具栏的"Update"按钮(或按
额外小技巧
如果修改Servlet方法后还是没生效,可以试试:
- 按
Ctrl+F9手动触发一次编译,确保类文件已经更新。 - 按
Ctrl+F10手动触发应用更新,Tomcat会重新加载修改后的类。
这样配置后,你应该就能像在Eclipse里一样,修改代码后立即看到效果了,不用放弃IDEA~
内容的提问来源于stack exchange,提问作者liam xu
相关产品推荐
相关产品推荐

