2014-06-21 94 views
3

這是用於Scala 2.11.1和sbt 0.13.5。如何在sbt的.scala文件中使用外部依賴項?

說我有以下目錄結構的斯卡拉/ SBT項目:

root/ 
    build.sbt 
    src/ .. 
    project/ 
    plugins.sbt 
    build.properties 
    LolUtils.scala 

,我想在LolUtils.scala使用一些外部庫。這通常在sbt中如何實現?

如果我只是通過libraryDependencies += ..將我需要的庫添加到build.sbt,那麼它不會找到它們,並在導入行上失敗not found: object ..

如果我單獨添加一個project/build.sbt,出於某種原因,它開始無法解析我的插件,另外我需要手動指定嵌套project/build.sbt中的Scala版本,這是不必要的重複。

完成此操作的最佳方法是什麼?

+0

是使用Scala的2.10您的圖書館嗎?如果你想在構建定義中使用你的庫,它應該與sbt使用的Scala版本兼容。我認爲,你不應該爲生成定義重寫Scala版本。 – lpiepiora

+0

@lpipiora版本一切正常,lib是針對2.11構建的。 – TC1

+0

這就是我的意思,sbt構建定義是使用Scala 2.10.x編譯的。你說你正在使用的Scala 2.11.1,這是好的爲您的項目來源,但在'項目中的源/應該使用Scala的2.10.x – lpiepiora

回答

4

sbt is recursive這意味着它使用自己編譯構建定義,即*.sbt文件和*.scala文件在project目錄下。要在構建定義中添加額外的依賴項以使用它們,您必須在project/build.sbt中聲明它們。

有一點需要注意這一點。您可以爲您的項目設置任何scalaVersion,即build.sbt,但您不應修改project/build.sbt中的scalaVersion,因爲它可能與sbt本身使用的版本(可能導致或可能不會導致插件的二進制不兼容)相沖突。

SBT 0.13.5使用斯卡拉2.10.4,你要使用的庫必須使用Scala的特定版本兼容。

> about 
[info] This is sbt 0.13.5 
... 
[info] sbt, sbt plugins, and build definitions are using Scala 2.10.4 
相關問題