2011-01-11 20 views
5

到目前爲止,我一直在使用tomcat和glassfish開發一個測試webapp,沒有maven。和通常的發展,直到部署週期很簡單:Maven,Tomcat/Glassfish,Archetype的高效開發週期?

  1. 在Eclipse IDE中開發,具有WebContent文件夾,這是有根的webapp文件夾中的WEB-INF,web.xml中,WEB-INF/lib,n全部。 eclipse中編譯的類位置被設置爲WEB-INF/classes。

  2. 編碼後,我可以點擊玻璃魚管理控制檯中的重新加載按鈕爲特定的Web應用程序。在tomcat中,我相信它也會在tomcat管理器中重新加載。

  3. 我可以在瀏覽器中訪問Web應用程序現在

,如果我想創建一個新的Web應用程序,這會讓使用JSF,彈簧,JPA的最新東西的,休眠時,PostgreSQL :

  1. 我應該在創建項目時使用原型的哪些建議?

  2. 我仍然可以使用我以前的開發步驟嗎?因爲我覺得這很容易,不需要將所有東西都重新打包成一個war文件,或者每當我想測試時將它複製到tomcat的webapp文件夾中。將文件保存在eclipse中,點擊管理控制檯/ tomcat管理器中的重新加載,我可以立即測試更新的webapp。

或者你通常在webapp開發週期中做什麼?請分享你的經驗,=)

謝謝!

+0

順便說一句:Eclipse STS 2.5.2.RELEASE Changlog(從今天起)提到了一個新功能,他們稱之爲「基於代理的重新加載」。它應該更新Dev Server中的應用程序而不重新啓動它。 – Ralph 2011-01-11 17:34:53

回答

6

開發週期與Maven和朋友

  1. 使用Maven來驅動你的代碼編譯 - 測試 - 部署 - 發佈週期。
  2. 從最適合您的網絡應用的Maven Archetype開始。這將爲您創建整個文件夾結構並添加Jar依賴項。
  3. 使用嵌入式輕量級服務器,如Jetty,在開發機器上這將非常快速,無需吸取資源,並且具有高度可配置性。另外,您可以將其設置爲自動重新加載更改。
  4. 大部分Maven項目都是假設需要測試驅動。其中Maven負責使用它的surefire plug-in。所以,每個構建都會有一個測試階段。
  5. 您可以爲各種環境(測試,dev,prod,Win,Unix ..)定義多個配置文件。這些配置文件將改變項目的行爲以與環境兼容。
  6. 使用Cargo,這也是一個Maven插件,用於在測試或生產服務器(可以是Glassfish,Tomcat,Jetty或任何其他Web服務器)上部署您的構建版本。
  7. 使用Liquibase with or without Maven :)來管理數據庫更改的方式與管理代碼更改的方式相同。

我來自與我以前的公司幾乎類似的項目。使用Maven進行開發可以讓事情變得如此順利,而且這種變化是可觀的


小谷歌搜索顯示,有人在原型工作了JSF and JPA with Spring


編輯#1 - 增加了更多的細節使用

可行性和易用性

  • Maven誕生於簡化大規模和分佈式代碼開發流程的必要性。
  • Maven是非常好與Eclipse集成 - 所以它是無痛的。
  • Jetty不斷監控源文件夾,因此您的更改幾乎可以立即部署。
  • 您可以自定義構建跳過測試,不建立依賴關係。當你只編輯一個用戶界面組件時,Jetty會悄悄地將它複製到「目標」文件夾。
  • 如果您擔心複製和重新部署。您必須read THIS才能瞭解事情的效率,請記住,每次更改JSP或HTML時都不必進行編譯測試部署。

這就是說,我想說的是,Maven可能是一個充滿挑戰性的學習。這是一個面向對象的開發週期方式。我們大多數人,用於構建腳本,最初可能會發現有點繁瑣/冗長。

資源

我建議通過以下資源去

+0

所以在你提到的開發週期中,IDE /編輯器中的一個代碼,使用maven來測試,構建,打包,重新部署到服務器上,我是否正確?用我原始的和沒有經驗的思維方式,當項目增長時,有很多類,很多測試用例,我寧願跳過編譯或將大量文件複製到webapp文件夾(I/O可能很慢,會引用週期的數量),也許還想在我編輯用戶界面類或簡單的時候跳過測試,這樣我就不需要每次都重新運行所有的測試。 – bertie 2011-01-11 15:23:52

0

爲Q2:

您仍然可以從IDE(蝕)即使您更改目錄結構中運行/在Tomcat調試應用程序。 (像Maven的目錄結構,而不是Eclipse的動態web目錄結構)

Project properties - > 
project facets - > 
Dynamic Web Module -> 
Click the appearing "further configuration available" 
and set your content dir and context root. 

你不必包裝要運行/調試它每次。

另一種選擇是使用碼頭

而且我相信有更多的選擇別人會告訴爲好。