我正在將一個應用程序從一個svn庫中移出,並與其他一些其他的東西共享到它自己的全新的應用程序中。所以,我有機會重新開始佈局。我應該如何佈置我的存儲庫?
該應用程序本身有兩個組件 - 一個合理標準的Java Web應用程序,與數據庫進行通信,還有一個後端組件(也稱爲Java),用於輪詢數據庫,並根據所發現的內容啓動長時間運行的處理任務 - 本質上,數據庫被用作隊列。該代碼被分成三個包:
org.blah.common
- 代碼,諸如DAO的,即網絡應用程序和後端org.blah.webapp
之間共享 - 的網絡應用程序;這取決於org.blah.common
,並構建到.war
文件。org.blah.backend
- 後端進程;這取決於org.blah.common
,並構建到包含jar和一些腳本的tar文件。
我還想把其他一些tomcat和apache配置也放到svn中。
現在,所有的三個軟件包都在svn下src
目錄下,並且有一個螞蟻腳本,其中包含構建不同部分的不同目標。這一切都有點不盡如人意--svn:ignore屬性變得相當大,並且一個目錄中的腳本與src
下的某些程序包中的代碼相關,而另一箇中的腳本則用於啓動和停止tomcat,這一點並不明顯。
我很喜歡maven standard directory layout,但我以前沒有用過它。我想出了這一點:
common/
src/
main/
java/
resources/
test/
java/
resources/
target/ # Not checked in
common.jar
webapp/
src/
main/
java/
resources/
webapp/
test/
java/
resources/
target/ # Not checked in
webapp.war
backend/
src/
main/
java/
perl/
resources/
test/
java/
resources/
target/ # Not checked in
backend.tar
infra/
tomcat/
bin/
conf/
apache/
bin/
conf/
db/
tables/
procs/
triggers/
需要注意的是,現在,我不打算遷移到Maven的 - 我會適應現有的Ant腳本,因爲他們的工作。儘管如此,我想保留在未來某個時間移動到maven的選項(或者使用maven佈局的類似buildr的東西)。
所以:
- 這是否看起來像鋪設倉庫的合理方式是什麼?有沒有什麼會讓我進一步絆倒我?
- 這對剛接觸應用程序的人來說會很明顯嗎?
- 這是否與maven兼容,我應該決定使用它嗎? (我知道從理論上講,你可以讓Maven在任何佈局下工作,但我相信他們推薦標準是有原因的。)
- IDE是否會遇到任何問題? (根據我在哪臺電腦上,我使用intellij或eclipse。我團隊中的其他人 - 對此沒有意見 - 使用netbeans。)
聽起來不錯,謝謝。已經使用IntelliJ和Eclipse進行過測試,它們看起來或多或少都很開心。 – Andy 2009-12-23 19:08:31
實際上,當提供pom.xml時,Eclipse,IntelliJ和NetBeans都能夠處理此佈局,而無需任何手動調整。我只是不知道在僅使用Ant時是否也是如此。 – 2009-12-23 19:21:44