2013-03-18 68 views
8

如何爲基於sbt的項目指定自定義目錄佈局?我一直在尋找網上sbt材料,但我在努力尋找此信息...如何爲sbt項目指定自定義目錄佈局?

我沒有找到文檔中是默認位置:

  • 來源的基本目錄
  • 源在src/main/scalasrc/test/scalasrc/main/java
  • 測試和src/test/java
  • 數據文件src/main/resourcessrc/test/resources
  • 非託管的JAR文件lib/

如何在build.sbt文件來覆蓋這些?

我的項目結構是目前如下:

  • 來源:[workspace]/sandbox-scala/src/sbt/myFirst/
  • 圖書館:[workspace]/java-lib/common/lib/

任何幫助表示讚賞。

回答

4

可以覆蓋許多sbt的默認目錄位置。下面是覆蓋在那裏SBT希望找到「非託管」的依賴性/ JAR文件的目錄爲例:(。在the sbt documentation有關depndencies更多的例子)

unmanagedBase := baseDirectory.value/"custom-jars-directory" 

您還可以配置目錄,具體到一個特定的「任務」 ......例如,設置在那裏的測試用例源代碼的目錄,請嘗試:

scalaSource in Test := { (baseDirectory in Test)(_/"test") }.value 

然後你的核心應用程序的源代碼可能是別的地方,src/下說:

scalaSource in Compile := { (baseDirectory in Compile)(_/"src") }.value 

注意:對於舊版本的sbt你可能需要以下(現在不推薦使用)語法:

unmanagedBase <<= baseDirectory { base => base/"custom-jars-directory" } 
scalaSource in Compile <<= (baseDirectory in Compile)(_/"src") 

這句法不會在sbt新版本工作(因爲0.13.13 , 我相信)。

+0

謝謝,感謝:) – 2013-05-10 16:35:10

+0

SBT的文檔已經改進,但它仍然需要更多的工作。 我有一個代碼(從非JVM語言移植)與佈局測試混合(但一致使用特定的「Te​​st.extension」後綴)與非測試源代碼,以及在哪裏與現有的構建過程,在源代碼區域不應該放置構建工件。甚至開始猜測如何設置SBT來完成這一點是完全不明顯的,儘管可以推測SBT足夠強大以至於它實際上應該是相當微不足道的。 – newbrific 2014-09-01 03:28:00

+0

當前用於定製測試目錄的語法是:'test中的scalaSource:= baseDirectory.value /「test」'(同樣的語法用於生成源代碼)。 – MirMasej 2016-12-31 12:54:39

相關問題