2012-03-17 54 views
0

我剛剛開始學習Spring(和Java),並且正在編寫一個包含多個部分的應用程序。我想要的是關於如何在IDE中構建應用程序以及部署時的一些意見。我使用intellij 11和Tomcat 7作爲參考。Java/Spring web應用程序的文件結構

我的應用程序包含這些作品:

  • 主要公共網站(www.myapp.com)
  • REST服務(www.myapp.com/rest)
  • 管理網站(admin.myapp .COM)
  • UI資源(cdn.myapp.com)

我需要所有這些應用程序的(我的服務層)之間共享的Java類,也有牛逼他在主網站和管理站點之間共享UI資源(css,js,圖像)的問題。

我應該如何最好地組織這些在我的IDE和Tomcat?

我的想法到目前爲止,每個提到的應用程序都是單獨的WAR文件(它們不需要共享會話)。我會創建我的服務層作爲一個可以被任何應用程序使用的JAR。你如何在intellij或Eclipse中表示這一點?

我想我的cdn.myapp.com上的UI資源可以像通常那樣包含在內,並且這些UI資源會再次打包爲另一個WAR。這聽起來不錯嗎?

如何使用多個子應用程序來組織項目?

正如你所看到的,我並不一定要遵循嚴格的規則,只是意見真的(儘管如果任何人有一個明確的答案,那麼很好)。

謝謝,

詹姆斯。

回答

2

我會考慮使用像mavenGradleBuildr構建工具。他們都使用standard directory structure並支持sub-modules

使用子模塊,您可以創建兩個「war模塊」,並將共享資源放入共享jar中。

/root <- Root project, contains configuration that is shared accross all sub-modules 
/root/sharedResources (jar) <- Contains the things you need to share between applications 
/root/admin (war) <- admin site, has a dependency on sharedResources.jar 
/root/mainSite (war) <- main site, has a dependecy on sharedResources.jar 

說到tomcat,你可以在不同的上下文中部署不同的war文件,或者使用反向代理來創建選擇的url方案。

的IntelliJ有行家一流的支持(不知道buildr和gradle這個),所以你只需在IDE的根pom.xml中,它會自動爲您創建正確的配置。

查看github,例如cucumber-jvm,瞭解如何在給定構建工具中配置父/子模塊的示例。

+0

在Tomcat上運行應用程序時,通常會如何包含Spring依賴關係?您是否傾向於將它們包含在WAR文件的WEB-INF/lib中以及JAR模塊的其他位置?或者你會把它們都放在類路徑的文件夾中嗎?您的方法在開發和生產環境中會有所不同嗎? .....也許這應該是一個問題在它自己的權利:) – James 2012-03-17 21:45:15

1

基本上有兩種方法來組織您的項目。無論使用哪種解決方案,我都會同意將組件分成4個不同的WAR文件,並且ebaxt建議您除了使用IDE之外,還要使用構建工具(如ant或gradle)。像Apache或nginx這樣的代理也可以幫助你的子域名。

您提出的解決方案將是我的首選方法:一組項目維護共享資源(如圖像)並負責構建服務層。這些項目創建的jar文件可以包含在其他項目中。每個應用程序組件(公共站點,REST服務,管理員,資源)都有自己的項目,可以構建一個用於部署到tomcat的war文件。在此解決方案中,您可以設置IDE,以便最終的4個項目包含/依賴於常見項目。在Eclipse中,這是通過配置構建路徑完成的。

另一種選擇是建立一個單一的項目,建立四個戰爭文件。如果你的產品不是太大,這通常會更有效率,但是隨着你的代碼庫的增長,它會產生問題。