2011-09-02 59 views
1

全部 -項目結構組織:如何讓它變得更好?

我們有幾個web應用程序,都基於不同團隊跨越組織開發的Spring的某些版本。它們各自產生自己的WAR,在不同的環境中工作,並且經常被部署在同一臺機器上,因爲它們的功能緊密結合在一起。因此,我們最終用:

tomcat/webapps/{A, B, C ... }

部署後,各用一個極爲相似的工具集鏈,複製所有春瓶和各地的相關性。

我想知道是否有辦法讓項目結構更好,部署爲SINGLE戰爭,同時讓每個webapp都能夠在自己的源代碼倉庫中生存並且有自己的發展速度?

任何指針或引用非常感謝。

Oliver

回答

1

你將不得不移動到像jboss這樣的應用服務器,但是你不能使用ear文件並且讓maven爲你構建模塊嗎?這樣,你或許可以把它們放在單獨的回購協議,如果你想每個都有它自己的POM,然後與人耳文件POM另一個項目:

這裏是行家耳插件:

http://maven.apache.org/plugins/maven-ear-plugin/

這裏是一個較舊的博客文章複式彈簧的應用程序EAR文件(單一的applicationContext FO所有的戰爭,分​​享,如果你需要):

http://blog.springsource.com/2007/06/11/using-a-shared-parent-application-context-in-a-multi-war-spring-application/

+0

您提供的較舊的博客鏈接是一個特別有趣的閱讀。我將把它作爲我的問題的最佳答案。謝謝。 – Oliver

3

在單個WAR中進行部署會將所有項目連接在一起。修改其中一項意味着重新部署所有項目,並伴隨隨附的質量檢查工作來驗證和迴歸。我不會推薦。可以通過將它們放在Tomcat/lib中來解決Spring JAR的多個副本;它們由Tomcat類加載器加載,而不是由WAR類加載器加載。這意味着每個應用都必須使用相同版本的Spring;升級意味着全部升級。你將不得不一次迴歸測試。

單獨的WAR文件會對您造成什麼危害?如果Tomcat/webapps目錄有很多部署,你會關心什麼?一個好處是它們可以在不同的發佈時間表上。這是一個很大的放棄。確保你在做之前有一個很好的理由。

+0

好吧,這些項目是緊密結合的。一個離不開另一個。例如,openID支持產生了WAR而不是JAR。來自一個項目的登錄首先被重定向到該WAR的servlet上下文,然後再返回。兩個項目都依賴於openid4java,最近發現了一個令人討厭的問題,即如果openid4java jar不完全相同,則無法登錄。我當然明白分離開發的好處,但是根據哪些功能組件分支出來會產生嚴重的影響。 – Oliver

0

想想OSGi的。您可以僅部署一次所有依賴項,將獨立但相互關聯的模塊構建爲OSGi捆綁包,並獨立部署和升級它們。您還可以選擇是將它們全部部署爲WAR(Web捆綁包),還是將它們部署爲帶有一個或多個WAR的JAR,然後導入它們將所有內容綁定起來。原來的Spring DM Server,它非常好,並且準備好開箱即用地完成這些工作。

1

根據您對另一個回覆的評論,這聽起來像您可能對maven's multi-module項目功能更感興趣。這將允許您定義具有一致依賴性的父POM和跨多個項目管理的項目佈局。

將每個項目組合成單個WAR都可能會使您受益匪淺,但我確實認爲這確實是「草地總是更加綠色」問題之一。我要記住的一件關鍵事情是確定如果項目合併後將進行的重新部署要花多長時間(或更短的時間)。