2009-02-05 64 views
5

我們正在運行一個包含Java,Python,PHP,SQL和Perl的大型項目。混合語言源目錄佈局

到現在爲止,人們一直在他們自己的私人存儲庫中工作,但現在我們想要將整個項目合併到一個存儲庫中。現在的問題是:目錄結構應該如何看待?我們是否應該爲每種語言分開目錄,還是應該按照組件/項目分開? python/perl/java如何處理普通的目錄佈局?

回答

6

我的經驗表明,這種佈局是最好的:

mylib/ 
    src/ 
     java/ 
     python/ 
     perl/ 
     .../ 
    bin/ 
     java/ 
     python/ 
     perl/ 
    stage/ 
    dist/ 

src是你的源頭,並在檢查的唯一的事情

bin就是「編譯」的構建過程中發生,並且未被簽入。

stage是您在構建期間複製東西以準備進行包裝的準備工作

dist是你把構建工件

我把模塊/組件/庫放在層次結構的頂部,因爲我分別構建每個模塊,並使用依賴管理器來根據需要組合它們。

當然,命名約定各不相同。但我發現這個工作非常令人滿意。

+0

在此源代碼佈局中,模塊級別高於還是低於src /級別?即mylib/src/java或/ src/java/mylib? – 2009-02-06 08:06:27

2

我認爲最好的做法是確保您的各個模塊不依賴於在同一目錄下(即按組件分開)。很多人似乎都對這個想法充滿恐懼,但是一套很好的構建腳本應該能夠自動消除任何痛苦。

最終目標是讓安裝基礎架構變得容易,然後在環境設置完成後,在單個組件上工作非常容易。 (需要注意的是,我來自Perl和CL世界,我們將「模塊」安裝到某個全局位置,比如〜/ perl或〜/ .sbcl,而不是將每個模塊包含在每個項目中,比如Java人會這樣做,你會認爲這將是一個維護問題,但最終不會是一個問題。使用腳本定期更新git倉庫(或CPAN)中的每個模塊,這確實是最好的方法。 )

編輯:另外一件事:

項目總是有外部依賴性。我的項目需要Postgres和一個可用的Linux安裝。將它與版本控制中的應用程序代碼捆綁在一起會很瘋狂 - 但是在新的工作站上安裝一切的腳本非常有用。

我想我想說的是,迂迴的方式可能是,我不認爲你應該對待你的內部模塊與外部模塊不同。