2009-10-08 51 views
5

在開發Maven Web應用程序時,我通常使用jetty-maven-plugin快速啓動我的應用程序以進行本地測試和調試。與m2eclipse一起使用啓動的缺點是沒有正確包含所有調試源,即使它們是由Maven下載的(請參閱Source lookup does not seem to work)。使用m2eclipse開發Web應用程序的首選方式

在Eclipse中調試Maven Web應用程序的首選方式是什麼?我特別喜歡與gwt-maven-plugin配合使用的配置。

+0

是否還有其他專家使用m2eclipse通過WTP工具來測試和調試eclipse中的webapps? – cetnar 2009-10-08 09:48:42

+0

@cetnar:m2eclipse允許我將maven用於mavenish的所有事情,例如依賴關係,插件等。 – 2009-10-08 11:08:04

回答

7

我用m2eclipse開發web應用程序的首選方法是......不使用它。相反,我用我引用下面Debugging with the Maven Jetty Plugin in Eclipse描述的方法:

步驟1

轉到運行/外部工具/外部 工具...「菜單項,在」運行「菜單 欄中選擇‘程序’,然後單擊 ‘新建’按鈕,在‘主’選項卡,在填寫 ‘位置:‘可執行對於 ’’的完整路徑 你」 mvn工作目錄:「選擇與您的web應用程序相匹配的 工作區。 對於「參數:」添加jetty:run

移動到「環境」選項卡,並 點擊「新建」按鈕,添加一個名爲MAVEN_OPTS新 變量與 值:

-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=4000,server=y,suspend=y 

如果提供suspend=n代替 suspend=y你就可以開始立即運行 而不運行調試程序, 在您真正希望調試的任何時候啓動調試程序。

步驟2

然後,拉起 「運行/調試/調試 ...」 菜單項,選擇 「遠程Java應用 」,然後單擊 「新建」 按鈕 。 「項目:」通過 選擇用於 你的web應用項目在對話框中填寫領域,並確保您 你 在上面的address=財產 指定使用同一端口號。

現在你需要做的是 運行/外部工具並選擇在 步驟1中創建啓動插件maven的工具設置的名稱 然後 運行/調試,並選擇 的名字調試您在步驟2中設置的設置。

從郵件 列表

停止碼頭

爲了阻止碼頭服務器 「允許遠程VM終止」 應該是 羅爾夫Strijdhorst在Maven的提供說明在 的調試對話框中檢查第2步。當您運行碼頭服務器 並將調試器連接時,您可以切換到 調試視角。 在調試視圖中,右鍵單擊Java HotSpot(TM)客戶端 VM [localhost:4000]並選擇 terminate。這將停止調試器 和碼頭服務器。

+0

好多了,謝謝。 – 2009-10-10 12:05:42

3

儘量避免編寫需要某種容器調試的代碼。總是編寫可以獨立運行的代碼,並將其包裝在非常薄的層中進行部署(薄層 - >少量代碼 - >少量錯誤)。

如果您確實需要,請嘗試MockRunner來模擬應用程序服務器。

除此之外,您可以在項目屬性中手動添加源代碼。

+0

感謝您的回答。我同意你關於分層的聲明,但有時我需要運行整個應用程序來調試集成問題,這就是源查找最有用的時候。 – 2009-10-08 09:07:53

+0

在這種情況下,設置斷點並在遇到「缺失源」視圖時將源添加到項目屬性。在下一個版本的m2eclipse發佈之前,這是一項手動工作。 – 2009-10-08 09:16:34