2009-12-22 46 views
1

我正在將一個應用程序從一個svn庫中移出,並與其他一些其他的東西共享到它自己的全新的應用程序中。所以,我有機會重新開始佈局。我應該如何佈置我的存儲庫?

該應用程序本身有兩個組件 - 一個合理標準的Java Web應用程序,與數據庫進行通信,還有一個後端組件(也稱爲Java),用於輪詢數據庫,並根據所發現的內容啓動長時間運行的處理任務 - 本質上,數據庫被用作隊列。該代碼被分成三個包:

  1. org.blah.common - 代碼,諸如DAO的,即網絡應用程序和後端
  2. org.blah.webapp之間共享 - 的網絡應用程序;這取決於org.blah.common,並構建到.war文件。
  3. 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。)

回答

1
  • 這是否看起來像一個合理的佈局方式?有沒有什麼會讓我進一步絆倒我?

那麼,Maven的捕捉行業最佳實踐,包括佈局,所以這看起來即使你不使用Maven,現在一個非常不錯的選擇。實際上,從其他技術轉向Maven時,這是推薦的遷移策略:首先,轉到Maven佈局並更新現有的構建腳本,然後介紹Maven。就你而言,如果所有項目的生命週期都相同(如果它們全部一起發佈),那麼除了可能不用Maven管理的Infra項目外,我沒有特別的意見,但現在沒有任何阻止。

  • 這對剛接觸應用程序的人來說會很明顯嗎?

我覺得它非常清晰,坦率地說,如果有些人有一個問題,它如果他們無法適應,也許這是他們需要被固定:)

  • 這是否與maven兼容,我應該決定使用它嗎? (我知道,從理論上說,你可以讓行家工作,任何佈局,但我相信他們推薦了一個標準的一個原因。)

看來幾乎完全兼容的Maven(除了紅外部分,因爲我說但這實際上不是問題)。是的,如果您不需要修改Maven的配置並使用默認約定,則顯然會更簡單。請注意,您可以與Ant構建並行設置Maven構建以無縫移動。

  • IDE是否會遇到任何問題? (根據我在哪臺計算機,我使用的IntelliJ或月食其他人在我的球隊 - 誰幫忙,沒有對這個觀點 - 使用NetBeans的)

這是一個很長的時間,因爲我沒有將Ant項目導入到其中一個IDE中,但我認爲他們應該都能夠處理這種佈局(使用Maven時100%確定)。回答這個問題的最好方法是做一些測試當然:)

+0

聽起來不錯,謝謝。已經使用IntelliJ和Eclipse進行過測試,它們看起來或多或少都很開心。 – Andy 2009-12-23 19:08:31

+0

實際上,當提供pom.xml時,Eclipse,IntelliJ和NetBeans都能夠處理此佈局,而無需任何手動調整。我只是不知道在僅使用Ant時是否也是如此。 – 2009-12-23 19:21:44

0

我唯一會遇到的問題是我期望src目錄直接有源代碼,而不是上面的佈局。不過,我認爲這是一種思考方式,我可以很快克服,特別是在Eclipse中。

0

爲什麼存儲庫中的目標目錄?我很喜歡不檢查構建結果,因爲它們可以很容易地複製。如果他們不容易被複制,那麼這就是應該解決的問題,而不是檢查二進制文件。

除此之外,我沒有看到這個佈局的任何問題。除了tomcat目錄,它是標準的maven佈局。

+0

啊,對不起 - 他們沒有簽入。這只是他們最終的目的。我會編輯這個問題來說明問題。 – Andy 2009-12-22 14:23:12