无法解决SBT中的依赖关系 - 我是否错过了某个基本的配置?

时间:2015-05-28 09:48:37

标签: sbt

我已经通过brew install sbt在新机器(运行osx)上安装了sbt 0.13.8,现在我无法在我的生命中成功解决除默认值之外的任何存储库的任何依赖关系。

为了说明这一点,我创建了一个非常简单的项目,其文件结构如下:

example/
  build.properties
  build.sbt

build.properties的内容很简单:

sbt.version=0.13.8

build.sbt的内容是:

lazy val root = (project in file(".")).
  settings(
    scalaVersion := "2.11.4",
    libraryDependencies += "com.twitter.common.zookeeper" % "server-set" % "1.0.83",
    resolvers += "Twitter Repository" at "http://maven.twttr.com"
  )

该版本的依赖项肯定存在于http://maven.twttr.com/com/twitter/common/zookeeper/server-set/1.0.83/的存储库中,但当我尝试compileupdate项目失败时,运行last已经只是让我挠头:

$ sbt
[info] Set current project to root (in build file:/Users/rb/Workspace/example/)
> update
[info] Updating {file:/Users/rb/Workspace/example/}root...
[info] Resolving com.twitter.common.zookeeper#server-set;1.0.83 ...
[warn]  module not found: com.twitter.common.zookeeper#server-set;1.0.83
[warn] ==== local: tried
[warn]   /Users/rb/.ivy2/local/com.twitter.common.zookeeper/server-set/1.0.83/ivys/ivy.xml
[warn] ==== typesafe-ivy-releases: tried
[warn]   https://repo.typesafe.com/typesafe/ivy-releases/com.twitter.common.zookeeper/server-set/1.0.83/ivys/ivy.xml
[warn] ==== public: tried
[warn]   https://repo1.maven.org/maven2/com/twitter/common/zookeeper/server-set/1.0.83/server-set-1.0.83.pom
[info] Resolving jline#jline;2.12 ...
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  ::          UNRESOLVED DEPENDENCIES         ::
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  :: com.twitter.common.zookeeper#server-set;1.0.83: not found
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn] 
[warn]  Note: Unresolved dependencies path:
[warn]      com.twitter.common.zookeeper:server-set:1.0.83 (/Users/rb/Workspace/exampl/build.sbt#L4)
[warn]        +- root:root_2.11:0.1-SNAPSHOT
...
> last
[info] Updating {file:/Users/rb/Workspace/example/}root...
[debug] Other repositories:
[debug] Default repositories:
[debug] Using inline dependencies specified in Scala.
...
> inspect resolvers
[info] Setting: scala.collection.Seq[sbt.Resolver] = List(Twitter Repository: http://maven.twttr.com)
[info] Description:
[info]  The user-defined additional resolvers for automatically managed dependencies.
[info] Provided by:
[info]  {file:/Users/rb/Workspace/example/}root/*:resolvers
[info] Defined at:
[info]  /Users/rb/Workspace/example/build.sbt:5
[info] Reverse dependencies:
[info]  *:externalResolvers
[info] Delegates:
[info]  *:resolvers
[info]  {.}/*:resolvers
[info]  */*:resolvers
[info] Related:
[info]  */*:resolvers
> show fullResolvers
[info] ArrayBuffer(Raw(ProjectResolver(inter-project, mapped: )), FileRepository(local,FileConfiguration(true,None),Patterns(ivyPatterns=List(${ivy.home}/local/[organisation]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]), artifactPatterns=List(${ivy.home}/local/[organisation]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]), isMavenCompatible=false, descriptorOptional=false, skipConsistencyCheck=false)), URLRepository(typesafe-ivy-releases,Patterns(ivyPatterns=List(https://repo.typesafe.com/typesafe/ivy-releases/[organization]/[module]/[revision]/[type]s/[artifact](-[classifier]).[ext]), artifactPatterns=List(https://repo.typesafe.com/typesafe/ivy-releases/[organization]/[module]/[revision]/[type]s/[artifact](-[classifier]).[ext]), isMavenCompatible=false, descriptorOptional=false, skipConsistencyCheck=false)), public: https://repo1.maven.org/maven2/)
[success] Total time: 0 s, completed 28-May-2015 10:50:23

正如你所看到的,当检查解析器时,twitter存储库就在那里,但是当运行update sbt甚至没有尝试使用它时(并且它根本不出现在相当空的列表中)由last)输出的存储库。

我无法找到任何关于我在文档或更新说明中做错的线索。在最初安装sbt时,我是否错过了某个基本的配置文件或参数?

修改:我设法通过追加fullResolvers而不是resolvers来解决此问题,如下所示:

lazy val root = (project in file(".")).
  settings(
    scalaVersion := "2.11.4",
    libraryDependencies += "com.twitter.common.zookeeper" % "server-set" % "1.0.83",
    fullResolvers += "Twitter Repository" at "http://maven.twttr.com"
  )

1 个答案:

答案 0 :(得分:0)

在OS X上为我工作,无需使用fullResolvers

我不确定这是否相关,但您的build.properties文件应位于项目目录下。

这就是您的项目结构的样子:

.
├── build.sbt
└── project
    └── build.properties