scala - 在现有项目中安装ensime无法解决依赖关系

标签 scala emacs installation ensime

我最近在 scala 中启动了一个 android 项目,我是一个 emacs Nerd ,我想在 emacs 中使用 ensime 而不是 IntelliJ。根据安装说明和这篇文章:

Installing Ensime for Scala Development on emacs: sbt.ResolveException: unresolved dependency: org.ensime#ensime-sbtt-cmd;0.12: not found

我的 ~/.sbt/plugins/plugins.sbt 看起来像这样:

resolvers += "Sonatype releases" at "https://oss.sonatype.org/content/repositories/snapshots"

addSbtPlugin("org.ensime" % "ensime-sbt-cmd" % "0.1.2")

我的项目的project/plugins.sbt看起来像这样:

addSbtPlugin("org.scala-sbt" % "sbt-android" % "0.7.1-SNAPSHOT")

(尽管我认为这无关)。

当我运行 sbt 时,输出如下所示:

[info] Loading global plugins from /Users/jmiles/.sbt/plugins
[info] Updating {file:/Users/jmiles/.sbt/plugins/}default-bdeac8...
[info] Resolving org.ensime#ensime-sbt-cmd;0.1.2 ...
[warn]  module not found: org.ensime#ensime-sbt-cmd;0.1.2
[warn] ==== typesafe-ivy-releases: tried
[warn]   http://repo.typesafe.com/typesafe/ivy-releases/org.ensime/ensime-sbt-cmd/scala_2.9.2/sbt_0.12/0.1.2/ivys/ivy.xml
[warn] ==== sbt-plugin-releases: tried
[warn]   http://scalasbt.artifactoryonline.com/scalasbt/sbt-plugin-releases/org.ensime/ensime-sbt-cmd/scala_2.9.2/sbt_0.12/0.1.2/ivys/ivy.xml
[warn] ==== local: tried
[warn]   /Users/jmiles/.ivy2/local/org.ensime/ensime-sbt-cmd/scala_2.9.2/sbt_0.12/0.1.2/ivys/ivy.xml
[warn] ==== Sonatype releases: tried
[warn]   https://oss.sonatype.org/content/repositories/snapshots/org/ensime/ensime-sbt-cmd_2.9.2_0.12/0.1.2/ensime-sbt-cmd-0.1.2.pom
[warn] ==== public: tried
[warn]   http://repo1.maven.org/maven2/org/ensime/ensime-sbt-cmd_2.9.2_0.12/0.1.2/ensime-sbt-cmd-0.1.2.pom
[info] Resolving org.scala-sbt#precompiled-2_10_0-m7;0.12.1 ...
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  ::          UNRESOLVED DEPENDENCIES         ::
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  :: org.ensime#ensime-sbt-cmd;0.1.2: not found
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn] 
[warn]  Note: Some unresolved dependencies have extra attributes.  Check that these dependencies exist with the requested attributes.
[warn]      org.ensime:ensime-sbt-cmd:0.1.2 (sbtVersion=0.12, scalaVersion=2.9.2)
[warn] 
sbt.ResolveException: unresolved dependency: org.ensime#ensime-sbt-cmd;0.1.2: not found
    at sbt.IvyActions$.sbt$IvyActions$$resolve(IvyActions.scala:214)
    at sbt.IvyActions$$anonfun$update$1.apply(IvyActions.scala:122)
    at sbt.IvyActions$$anonfun$update$1.apply(IvyActions.scala:121)
    at sbt.IvySbt$Module$$anonfun$withModule$1.apply(Ivy.scala:114)
    at sbt.IvySbt$Module$$anonfun$withModule$1.apply(Ivy.scala:114)
    at sbt.IvySbt$$anonfun$withIvy$1.apply(Ivy.scala:102)
    at sbt.IvySbt.liftedTree1$1(Ivy.scala:49)

        (etc.)

有什么帮助吗?

最佳答案

我总是通过依赖项得到这个。虽然我无法对此做出解释,但以下是反复出现的常见模式。

插件/库开发人员给出的代码通常是错误的。当我访问他们的 Maven 存储库时,他们列出的版本在存储库中不存在。我只是将其更新到正确的版本,然后就可以正常工作了。另外,由于某种原因,当我将某些插件放入plugins.sbt(建议的位置)时,它们会起作用。而其他的只有当我将它们粘贴到project/build.sbt中时才起作用。这没有意义,但是一旦我将其移到那里,它就会突然安装并运行。合并的依赖项列表。如果您将一些东西组合在一起并在 build.scala 和 build.sbt 中都添加依赖项,它将抛出一个完全无用的通用错误。删除其中一个,它就会突然运行。

另请记住,% 会导致 scala 版本附加到其名称中。而 %% 明确定义名称。有时,这会在使用 % 时导致错误,因为它没有适用于该 scala 版本的版本。转到存储库并显式输入包的名称来解决此问题。

关于scala - 在现有项目中安装ensime无法解决依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20209479/

相关文章:

oop - 什么是开放递归?

emacs - 如何使用 Emacs 模式行修复这种随机行为?

.net - 证书 - 它们何时安装在证书存储中?

c# - 是否可以使用 WIX 创建多语言安装程序?

去安装: “Can' t load package” (even though GOPATH is set)

scala - 从 Scala 与 Arduino 交谈

java - 在 Akka 2.X.X 的 actors 类定义上使用 @Transactional?

xml - 使用 Scala 提取具有特定子元素内容的 XML 元素

emacs - 窄缓冲区,使用 org-match-sparse-tree?

emacs - 重新映射 Emacs 命令