2017-02-10 100 views
1

我有一個簡單的Spring Boot應用程序,我注意到它重新加載更改,即使沒有rebel.xml? 該文件的目的是什麼?我是否必須生成rebel.xml以重新加載JRebel更改?

+0

AFAIK rebel.xml有2個目的:作爲觸發(隻手表在包含該文件的文物變動)處理,作爲配置( (重新)來源觀看)。如果Spring Boot在沒有rebel.xml的情況下發現更改,我想這不是JRebel的重新加載,因此如果沒有JRebel代理,它也會運行。另請參閱[rebel.xml文檔](https://manuals.zeroturnaround.com/jrebel/standalone/config.html)。 – Thomas

回答

0

JRebel遠不止rebel.xml文件。

基本上,有3個不同的部分組成:

  • rebel.xml:定義範圍是受「熱插拔的IDE資源換言之:該文件控制哪些文件可以
  • rebel-remote.xml:可能需要告知使用JRebel代理程序的「遠程服務器」有關適用於「熱插拔」的「組件」
  • 然後當然:這個「遠程服務器」本身的本質;因爲這可能只是你本地啓動的一個過程IDE;而且還可以在不同的機器上獨立運行的JVM。

長話短說:似乎你開始使用這個工具而沒有學習如何使用。因此,這裏的重要答案是:去閱讀手冊。例如,開始here

+0

對於主場景,只有rebel.xml是必需的,除非編譯器目標文件夾與加載資源的位置不同。當應用程序/服務器遠程運行時,特定方案需要額外的rebel-remote.xml和遠程服務器配置。 –

4

JRebel使用rebel.xml文件將您的classpath資源和servlet資源重新映射到build目錄,以便在IDE中進行更改並構建類時,JRebel將檢測該構建目錄中的更改並重新加載更改的類。

無論rebel.xml文件如何,JRebel都會監視它可以在類路徑中找到的所有目錄。它不監視jar,war文件。 因此,如果使用JRebel啓動jar文件並且沒有rebel.xml文件,那麼它將不會有任何目錄進行監控,並且無法重新加載任何內容。

這就是爲什麼需要rebel.xml文件:

  1. 爲了讓JVM從構建目錄
  2. 加載類要在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

相關問題