我正在使用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
resolvers
和libraryDependencies
设置(就像您所做的那样(,但请注意构造依赖项%%
。
从使用 %% 获取正确的 Scala 版本:
如果您使用
groupID %% artifactID % revision
而不是groupID % artifactID % revision
(区别%%
在于groupID
(,sbt 会将项目的 Scala 版本添加到工件中 名字。这只是一条捷径。
因此,resolvers
、libraryDependencies
和%%
(和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
.