2012-05-24 46 views
1

首先,我知道如何編寫基本/中間級別的生成文件 。在我的C++項目中,我使用一個makefile自動完成很多東西 。對我來說最重要的是,它自動使用 通配符檢測所有源文件(始終在同一文件夾中),使用它來預測所有對象文件的名稱(和位置)並進行適當編譯。使用Makefile管理scala項目

最近我一直在努力實現與我的斯卡拉 項目相同的效果,但我碰到了兩個障礙。

屬於包
  • Copilled類文件都存儲在 子目錄(如com/me/mypack/)。這是一個問題,因爲 使需要找到這些文件來檢查時間戳(和我 不知道該怎麼做自動)。
  • 某些源文件(如定義package object) 的文件會生成具有不同命名標準的類文件。 製作 需要知道這些類文件在哪裏,我不知道如何 自動做到這一點。

這樣做的結果是「有問題的」源文件編譯 我每次運行make時間(這是由Scala的長 編譯時間加重)。我想知道如何解決這個問題,而無需手動寫出期望的類文件的整個列表。

編輯作爲一個額外注:我想避免將源文件中的子目錄。我喜歡將它們全部放在同一個目錄中,原因有幾個。

+2

[「如果你只有一把錘子,一切看起來像釘子一樣」](http://en.wikipedia.org/wiki/Law_of_the_instrument) – paradigmatic

回答

9

您應該爲Scala使用sbtMaven。這些是專門爲Scala和Java的工作方式而設計的,並且它們將更容易設置和使用。他們還提供比製作更多的功能。

這些工具用於各種事情。編譯是一個很大的問題,但它們對於依賴管理也很重要。另外,sbt(也可能是Maven?)執行「漸進式編譯」,因此只有已更改的類纔會重新編譯,這會加快編譯速度。

我個人使用sbt,但我知道更喜歡Maven的人。