我有一个简单的Spring Boot应用程序,我注意到它重新加载更改,即使没有rebel.xml? 该文件的目的是什么?我是否必须生成rebel.xml以重新加载JRebel更改?
回答
JRebel远不止rebel.xml文件。
基本上,有3个不同的部分组成:
- rebel.xml:定义范围是受“热插拔的IDE资源换言之:该文件控制哪些文件可以
- rebel-remote.xml:可能需要告知使用JRebel代理程序的“远程服务器”有关适用于“热插拔”的“组件”
- 然后当然:这个“远程服务器”本身的本质;因为这可能只是你本地启动的一个过程IDE;而且还可以在不同的机器上独立运行的JVM。
长话短说:似乎你开始使用这个工具而没有学习如何使用。因此,这里的重要答案是:去阅读手册。例如,开始here。
对于主场景,只有rebel.xml是必需的,除非编译器目标文件夹与加载资源的位置不同。当应用程序/服务器远程运行时,特定方案需要额外的rebel-remote.xml和远程服务器配置。 –
JRebel使用rebel.xml文件将您的classpath资源和servlet资源重新映射到build目录,以便在IDE中进行更改并构建类时,JRebel将检测该构建目录中的更改并重新加载更改的类。
无论rebel.xml文件如何,JRebel都会监视它可以在类路径中找到的所有目录。它不监视jar,war文件。 因此,如果使用JRebel启动jar文件并且没有rebel.xml文件,那么它将不会有任何目录进行监控,并且无法重新加载任何内容。
这就是为什么需要rebel.xml文件:
- 为了让JVM从构建目录
- 加载类要在rebel.xml添加目录到类路径,以便JRebel的加以监督
但是在很多情况下,当在IDE中运行独立应用程序时,IDE不会运行该jar文件,而是直接从build目录运行类并将构建目录添加到类路径中。
在这种情况下,正在运行的类已经在build文件夹中,因此它们可以重新加载,并且更改也发生在由JRebel监视的目录中。这样的设置不需要rebel.xml文件。 从IDE启动的爆炸Web应用程序有时也会发生同样的情况。
通过在命令行中运行应用程序,您可以检查应用程序是否也是这种情况。
首先使用JRebel运行Spring Boot jar文件,并且没有rebel.xml文件,您将看到重新加载不会发生。要查看重新加载,您需要生成rebel.xml文件并将其构建到jar中。
但是,如果将构建目录添加到类路径并运行该类,那么JRebel应该重新加载类而不需要rebel.xml文件。
你可以阅读更多关于rebel.xml文件从这里:https://manuals.zeroturnaround.com/jrebel/standalone/config.html
- 1. 每次我做一个小改动时,我是否必须重新加载app.js?
- 2. 我是否必须重新开始?
- 3. 更改gpu后是否必须重新安装tensorflow?
- 4. 更改纹理大小时是否必须重新映射UV?
- 5. Rails dataTables必须重新加载页面
- 6. JRebel不会重新加载java swing ui
- 7. jrebel - 所有课程重新加载
- 8. 我是否必须重新启动导轨才能使用新的发生器?
- 9. 更改模式时,我是否必须更新接收管道组件?
- 10. 每次我在Eclipse中更新网站时,是否必须重新启动Tomcat?
- 11. SASS设置 - 必须关闭并重新打开网页以使更改生效
- 12. 我是否必须下载所有iCloud文件才能生成缩略图?
- 13. 我必须重新加载RevMob广告吗?
- 14. 更改登录密码后是否必须重新启动mysql服务器?
- 15. 更改Java界面后,客户端是否必须重新编译?
- 16. 我是否必须更改所有的htmlspecialchars ... mysql_real_escape_string中的ENT_QUOTES?
- 17. 如果我增加了bcrypt成本,我是否必须重新刷新已经注册的用户密码?
- 18. 是否可以重新加载MapView?
- 19. 是否可以重新加载CLR?
- 20. 我们是否必须使用ScrollableResults进行批量更新?
- 21. 在mdadm raid 5成长后,我是否必须等待重塑以调用resize2fs?
- 22. 我是否必须重新查询DOM以获取.blur()中的jQuery选择器?
- 23. 添加设备后,我是否必须重新归档adhoc应用程序?
- 24. Erlang新手:为什么我必须重新启动才能加载新代码
- 25. React是否必须重新提交父母才能让孩子重生?
- 26. Android DialogFragment:我可以重新使用,还是必须重新使用另一个?
- 27. DbEntityValidationException:是否必须发送所有必填字段以仅更新一个?
- 28. 检测python模块是否更改,然后重新加载
- 29. 如果我的静态IP更改,我是否必须重新部署引用WCF的应用程序?
- 30. 我是否必须使用新证书更新我的应用程序?
AFAIK rebel.xml有2个目的:作为触发(只手表在包含该文件的文物变动)处理,作为配置( (重新)来源观看)。如果Spring Boot在没有rebel.xml的情况下发现更改,我想这不是JRebel的重新加载,因此如果没有JRebel代理,它也会运行。另请参阅[rebel.xml文档](https://manuals.zeroturnaround.com/jrebel/standalone/config.html)。 – Thomas