我是否必须生成rebel.xml才能重新加载JRebel更改?

时间:2017-02-10 11:42:29

标签: java jrebel

我有一个简单的Spring Boot应用程序,我注意到即使没有rebel.xml也重新加载了更改? 该文件的目的是什么?

2 个答案:

答案 0 :(得分:4)

JRebel使用rebel.xml文件将classpath资源和servlet资源重新映射到构建目录,这样当您在IDE中进行更改并构建类时,JRebel将检测该构建目录中的更改,重新加载更改的类。

无论rebel.xml文件如何,JRebel都会监视它在类路径中可以找到的所有目录。它不监视jar,war文件。 因此,如果使用JRebel启动jar文件而没有rebel.xml文件,那么它将没有任何要监视的目录,并且无法重新加载任何内容。

这就是需要rebel.xml文件的原因:

  1. 使JVM从构建目录
  2. 加载类
  3. 将rebel.xml中的目录添加到类路径中,以便JRebel监视它们
  4. 但是,在许多情况下,在IDE中运行独立应用程序时,IDE不会运行jar文件,而是直接从构建目录运行类,并将构建目录添加到类路径中。

    在这种情况下,正在运行的类已经在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 :(得分:0)

JRebel远远超过rebel.xml文件。

基本上,有3个不同的部分:

  • rebel.xml:定义了受“热交换”影响的IDE资源的范围。换句话说:此文件控制哪些文件可以“热插拔”。
  • rebel-remote.xml:可能需要告诉使用JRebel代理的“远程服务器”有关“热交换”的“组件”
  • 当然
  • :“远程服务器”本身的性质;因为这可能只是IDE在本地启动的过程;但也是一个在不同机器上独立运行的JVM。

长话短说:您似乎开始使用此工具而未学习如何使用。因此,这里的基本答案是:去,阅读手册。例如,开始here