2015-01-12 43 views
2

我爲我的構建使用了兩個文件:build.sbt和assembly.sbt(用於使用sbt-assembly插件構建胖罐)。我在build.sbt中定義了一些vals。我們只是說我正在做一些依賴於它們的自定義任務。但是,我注意到在build.sbt中定義的val在assembly.sbt中不可見。所以我最終在這兩個文件中複製了代碼。如何配置它,使assembly.sbt可以在build.sbt中看到val?如何在build.sbt和assembly.sbt之間共享val

謝謝!

+0

目前不支持.sbt語法。 雖然你可以在'project/lib.scala'文件中放置共享val,但是 – jsuereth

+0

你好jsuereth!這是如何運作的?一旦我創建了lib.scala,我可以將它導入到build.sbt和assembly.sby中嗎? –

+0

我會創建一個真正的答案。 – jsuereth

回答

1

目前,*.sbt文件中的val意味着命名空間分隔。我們已經討論過是否擁有全局命名空間的優點,但最終保持它們的獨立性使得事情更加一致。

的「SBT」的方式來分享瓦爾斯和設置build.sbt之間是要麼:

  • 創建一個插件,它這樣做。
  • project/目錄中創建一個「庫」。

對於選項#2,您可以執行以下操作:

項目/ lib.scala

package mylib 

object MyStuff { 
    val foo = "hi" 
} 

build.sbt

import mylib.MyStuff 

// Just reference .scala code from the project/ directory. 
name := MyStuff.foo 

希望幫助!