如何在具有Build.scala的SBT 0.11项目中设置托管依赖项

Iva*_*van 8 scala sbt

我正在使用SBT 0.11构建一个简单的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"
)
Run Code Online (Sandbox Code Playgroud)

~/MyProject/project/Build.scala 如下


import sbt._

object MyProjectBuild extends Build {
  lazy val MyProject = Project("MyProject", file("."))
}
Run Code Online (Sandbox Code Playgroud)

这似乎工作得很好.该项目确实编译并运行.项目名称设置正确(如果我不使用Build.scala,那么名称似乎看起来像"default - ????",尽管它在build.sbt中指定).

但问题是依赖似乎不起作用 - update命令不下载任何东西.如何解决这个问题?在这种情况下,我是否需要指定依赖项Build.scala而不是in build.sbt

Kip*_*ros 17

您是否有可能已经检索了项目依赖项,但没有意识到它,因为它们存储在常春藤缓存中?您可以使用该命令从SBT控制台查看托管类路径

show managed-classpath
Run Code Online (Sandbox Code Playgroud)

除非项目配置为执行此操作,否则最新版本的SBT不会将托管依赖项存储在项目目录中.如果需要,可以将以下内容添加到build.sbt文件中:

retrieveManaged := true
Run Code Online (Sandbox Code Playgroud)

这将创建一个~/MyProject/lib_managed/目录和内容.

  • 您可能必须运行SBT命令`reload`,`clean`和`update`. (4认同)
  • @Themerius,我现在明白你的问题.如果你想要`scala-compiler.jar`,你可能需要添加一个显式依赖项.我在`build.sbt`中有这个:`libraryDependencies ++ = Seq("org.scala-lang"%"scala-compiler"%"2.9.1") (2认同)