在 IntelliJ IDEA CE 12 中由 sbt 0.13 报告的未解析依赖项



我正在使用IntelliJ IDEA CE 12进行Scala开发。我已经安装了 SBT 插件。目前我的~/.sbt/0.13/plugins/build.sbt如下所示:

resolvers += "Sonatype snapshots" at "http://oss.sonatype.org/content/repositories/snapshots/"
addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.7.0-SNAPSHOT")

我的项目在没有auto-import的情况下导入到 IDEA 中。

我注意到我的 Scala 类无法找到一些导入,但我能够编译项目并运行 - 所以它可以工作。

在缺少进口的情况下进行开发是一项艰巨的任务;)所以我成功地运行了gen-idea,并尝试在打开auto-import的情况下再次导入我的项目。不幸的是,我收到以下错误:

[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  ::          UNRESOLVED DEPENDENCIES         ::
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  :: com.typesafe.slick#slick_2.9.2;2.0.0: not found
[warn]  :: io.spray#spray-json_2.9.2;1.2.5: not found
[warn]  :: com.typesafe.akka#akka-actor_2.9.2;2.2.0-RC1: not found
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::

该项目built.sbt如下:

resolvers ++= List(
  "spray repo" at "http://repo.spray.io/",
  "Typesafe Repository" at "http://repo.typesafe.com/typesafe/releases/"
)
libraryDependencies ++= List(
  "com.typesafe.slick" %% "slick" % "2.0.0",
  "postgresql" % "postgresql" % "8.4-701.jdbc4",
  "org.xerial" % "sqlite-jdbc" % "3.6.20",
  "io.spray" % "spray-can" % "1.2-M8",
  "io.spray" % "spray-routing" % "1.2-M8",
  "io.spray" %% "spray-json" % "1.2.5",
  "com.typesafe.akka" %% "akka-actor" % "2.2.0-RC1",
  "org.slf4j" % "slf4j-api" % "1.7.1"
)

如何解析 IDEA 中的依赖关系?提前感谢!

UNRESOLVED DEPENDENCIES总是关于依赖项中的小部分,这些部分使 SBT 无法在可用存储库中找到它们。

您应该始终inspect resolverslibraryDependencies设置(就像您所做的那样(,但请注意构造依赖项%%

从使用 %% 获取正确的 Scala 版本:

如果您使用 groupID %% artifactID % revision 而不是 groupID % artifactID % revision(区别%%在于 groupID (,sbt 会将项目的 Scala 版本添加到工件中 名字。这只是一条捷径。

因此,resolverslibraryDependencies%%(和scalaVersion(的组合通常会给刚接触 sbt 的人带来许多麻烦(事实上,其他构建工具也必须找到开发人员在他们的项目构建文件中设置的依赖项(。

使用 http://mvnrepository.com/检查依赖项是否确实可下载。

让我们选择,"com.typesafe.slick" %% "slick" % "2.0.0".鉴于您的build.sbt文件(或任何其他构建文件(中没有指定scalaVersion%%被解析为您使用的 sbt 启动器的默认 Scala 版本 - 它可能是 2.9.1 或 2.10.3 或其他版本。不知何故(鉴于您提供的信息,我无法解释为什么(它选择了 2.9.2。Scala版本没有 http://mvnrepository.com/artifact/com.typesafe.slick 的光滑。您需要使用以下方法(请注意单个%(:

"com.typesafe.slick" % "slick_2.10" % "2.0.0"

或将scalaVersion设置为 2.10.3,这是当前发布的 Scala 版本,如下所示:

scalaVersion := "2.10.3"

对其他%%依赖项重复此操作。

可能是有可用的resolvers可以提供此类工件,但您必须明确告知您,因为搜索 Internet 和私有存储库通常很痛苦。

[warn] :: com.typesafe.akka#akka-actor_2.9.2;2.2.0-RC1: 未找到

SBT 正在尝试解决 Scala 版本 2.9.2 的这些依赖关系,您应该添加

scalaVersion := "2.10.3"

(实际上,任何 2.10.x 都应该可以(到您的build.sbt.

相关内容

  • 没有找到相关文章

最新更新