我很難讓JRebel在當前的開發環境中工作。如何在Tomcat環境中設置JRebel
我有多模塊maven項目。目前,Tomcat實例通過服務(tomcat monitor)進行控制,並且已部署的web應用程序使用位於$ {catalina.home}/conf/Catalina/localhost的XML進行配置,其中docBase屬性指向$ {absolute maven project路徑} /目標/應用程序(和可重新加載的屬性爲true)。所以每次我做一個maven構建時,如果有任何類更改,我只需手動重新啓動tomcat。如果修改發生在靜態資源(JSP,HTML,JS, 等..)頁面刷新將做到這一點。
在我第一次嘗試時,我將web應用程序配置爲在Eclipse內部運行的tomcat服務器上運行。提供的maven插件也配置成功:我的所有子模塊都繼承了插件配置,並且我可以在tomcat啓動時看到來自JRebel的輸出消息,指示已經偵聽的絕對項目路徑。唯一的問題是Eclipse的WTP/Tomcat插件不會和eclipse中的War覆蓋功能一起使用。啓動服務器後,僅部署最後一個Web應用程序(具有其他War作爲依賴項的模塊)中存在的資源。
所以,我回到了原來的配置開發,並將JRebel引入它。我將JRebel java選項傳遞給Tomcat Vm,所有Maven模塊都有rebel.xml(正確的資源文件夾),但沒有任何反應。我看不到通常的JRebel消息,我嘗試更改源文件夾中的JSP並執行頁面刷新,但該文件不會自動重新部署(在這種情況下,源文件夾中的$ {maven.projec }/target/app會訣竅)。
我的兩個問題是:
- 這是可能的你過來了Eclipse WTP問題?
- 什麼是涉及maven eclipse和外部tomcat的功能性開發環境?
任何幫助將不勝感激!
更新1
於是,我知道了。有點......我仍然在與覆蓋的戰爭模塊鬥爭。我有一個主要的Web應用程序模塊,依賴於幾個Web應用程序模塊。由於rebel.xml是在主webapp構建發生時通過jrebel maven插件動態生成的,因此只有它的jrebel.xml佔上風。其他所有人都被壓扁了。 jars模塊的rebel.xml位於正確的位置(在jar文件內)。
如果我爲指向包含源文件(靜態文件,如JSP,HTML,JS,CSS,圖像等)的所有絕對目錄的主webapp創建自定義rebel.xml,依賴的網絡應用程序。但這對我的團隊開發環境毫無價值。我使用的是maven屬性,但是我們有兩個不同的maven多模塊層次結構,它們彼此不知道,我不能使用root pom來連接它們。所以這些屬性不足以保證在rebel.xml中每個開發人員機器上生成的絕對路徑是正確的。
現在,我試圖解決使用某種maven插件來執行rebel.xml合併。對於尚未成功的記錄。
這是成爲另一個問題有點不同的原始問題:)也許我應該通過另一個問題。
更新2
我得到它的工作!..最後。 我用XSLT Generator Maven Plugin來幫我合併各種rebel.xml文件。還必須使用神話般的Maven Copy Plugin,因爲xslt轉換髮生在最終的戰爭包裝之後,我不得不將結果rebel.xml添加到該WAR。
如果有人需要配置文件的詳細信息,請不要猶豫。
希望這可以幫助那裏的人。
不知道這是否相關,但看看http://stackoverflow.com/questions/6328604/tomcat-and-eclipse-zero-turnaround-deployment – mindas 2011-06-15 14:56:07
感謝您的提示。我在沒有JRebel的情況下建立的實際開發非常接近philwb描述的開發。我試圖轉移到JRebel,因爲在構建過程中我們有一個多模塊項目,其中包含多個戰爭覆蓋和本地jar包依賴項。在沒有某種「幫助」的情況下建立一個可用的Eclipse環境來處理這種情況幾乎是不可能的。 – 2011-06-18 17:45:08
你好佩德羅。 添加更新爲答案,並關閉此問題。 – 2013-03-13 07:08:57