2013-01-23 85 views
3

我正在開發一個IntelliJ Idea 12,Maven,JRebel和Tomcat的基於Web的應用程序。爲了充分JRebel的優勢,自動重新加載改變到Spring豆,我用下面使用IntelliJ Idea,Maven,Tomcat和JRebel進行爆炸式戰爭部署

IntelliJ exploded war deployment

通過的IntelliJ提供的爆炸戰爭部署由於一個Maven模塊的IntelliJ完全遵循Maven的約定,以編譯Java文件導入輸出文件夾(目標/類)這是不同於爆炸的webapp直接(目標/彈簧mvc展示/ webapp/web-inf /類)。因此,Tomcat和JRebel無法重新加載這些新類的更改。

目前,我暫時配置了IntelliJ的輸出文件夾,指向文件夾WEB-INF/classes,以便可以重新加載更改。由於我不想違反Maven約定,任何人都可以告訴我一個更優雅的解決方案嗎?

target (Maven generated artifact directory) 
    | 
    -- classes (compiled) 
    | 
    -- spring-mvc-showcase (exploded webapp directory) 
      | 
      -- WEB-INF 
       | 
        -- classes 
+0

解決! JRebel具有在運行時直接監視和重新加載更改文件的功能,即使是打包的戰爭部署也是如此!只需在項目上單擊「生成rebel.xml」,JRebel就會根據Maven pom.xml監視輸出目錄。驚人! –

回答

1

您是否安裝了IntelliJ IDEA JRebel插件?它添加了一個動作「生成rebel.xml」。這將生成一個rebel.xml文件,該文件應該以部署中的WEB-INF/classes結尾,並將這些類映射到IDEA編譯它們的位置。

+0

非常感謝。我不知道還有一個教程留給「rebel.xml」。在爲IntelliJ安裝JRebel插件之後,我認爲它工作正如我看到它完美地重載了Spring XML配置中的更改。 –

2

後你已經正確配置它,當你啓動Tomcat,你會看到這樣的事情:而不是運行Maven包

[2013-01-23 15:39:12] JRebel: Directory '/home/xxx/workspace/xxx/trunk/target/classes' will be monitored for changes. 
[2013-01-23 15:39:12] JRebel: Directory '/home/xxx/workspace/xxx/trunk/src/main/webapp' will be monitored for changes. 

然後,每個我改變的東西時我做的是,我執行「Make project」(在IDEA中),/ target/classes文件夾得到更新,配置將自動重新加載它的類。

+0

您的日誌非常有用,它幫助我理解了我的JRebel配置錯誤。 –

+0

我有點相同的問題。其實,這是行家誰保持爆炸戰爭的目標/彈簧MVC-展示,所以如果你點JRebel的到/目標/彈簧MVC-展示/ WEB-INF/classes中,你必須在你每次改變運行Maven一類。相反,如果您將它指向目標/課程,那麼您就可以使用更快的「Make項目」。 – ag0rex