2011-11-03 79 views
8

我建立一個簡單的斯卡拉項目,SBT 0.11。如何設置管理依賴於SBT 0.11項目有Build.scala

所有的代碼文件都在~/MyProject/src/main/scala/

~/MyProject/build.sbt在以下


name := "MyProject" 

version := "1.0" 

scalaVersion := "2.9.1" 

libraryDependencies ++= Seq(
    "mysql" % "mysql-connector-java" % "5.1.+", 
    "c3p0" % "c3p0" % "0.9.1.2", 
    "org.apache.commons" % "commons-lang3" % "3.0.1", 
    "commons-lang" % "commons-lang" % "2.6", 
    "javassist" % "javassist" % "3.12.1.GA" 
) 

~/MyProject/project/Build.scala如下


import sbt._ 

object MyProjectBuild extends Build { 
    lazy val MyProject = Project("MyProject", file(".")) 
} 

這似乎是工作幾乎罰款。該項目確實編譯並運行。項目名稱設置正確(如果我不使用Build.scala,那麼名稱似乎看起來像「default - ????」,儘管它在build.sbt中指定)。

但問題是,依賴似乎並不管用 - update命令不下載任何東西。如何解決這個問題?在這種情況下,我需要在Build.scala而不是build.sbt中指定我的依賴關係嗎?

+0

在標題,你的意思'build.sbt'而不是'build.scala'? –

+0

@ kipton - 巴羅斯不,我的意思是說有,除了'build.sbt' – Ivan

回答

17

有沒有可能是你已經檢索到的項目的依賴,但沒有意識到這一點,因爲它們存儲在常春藤緩存?你可以用命令來查看從SBT控制檯管理類路徑

show managed-classpath 

最近SBT的版本不被管理的依賴關係存儲在項目目錄,除非該項目被配置這樣做。如果你願意,你可以添加以下到您的build.sbt文件:

retrieveManaged := true 

這將創建一個~/MyProject/lib_managed/目錄和內容。

+0

但這並不複製的Scala庫'Build.scala'一個項目lib_managed?我如何實現這一目標? – Themerius

+4

您可能需要運行SBT命令'reload','clean'和'update'。 –

+0

不幸的是,這是行不通的。 'scala-compiler.jar'仍然保存〜/ .sbt/boot/...,如果這個文件也可以保存在lib_managed中,那將會很好。 – Themerius