我有一個簡單的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