2013-11-26 48 views
1

我最近在scala開始了一個android項目,我是emacs nerd,我想在emacs中使用ensime而不是IntelliJ。按照安裝說明,和這個職位:在現有項目中安裝ensime無法解決依賴關係

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

我的〜/名.bst /插件/ plugins.sbt看起來是這樣的:

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

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

和我的項目的項目/ 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.) 

任何幫助嗎?

回答

1

我總是在依賴關係中得到這個。雖然我沒有解釋它,但這是一再出現的常見模式。

通常,插件/庫開發人員給出的代碼是錯誤的。當我進入他們的Maven倉庫時,他們列出的版本在倉庫中不存在。我只是更新它到正確的版本,然後繁榮它的作品。另外,出於某種原因,當我將它們放入plugins.sbt(建議的地方)時,一些插件會起作用。而其他人只有在我將它們粘在project/build.sbt中時纔有效。它沒有任何意義,但只要我移動它,它就會突然安裝並運行。組合依賴列表。如果你一起黑客攻擊並且在build.scala和build.sbt中都存在依賴關係,它將拋出一個完全無益的通用錯誤。除去一個或另一個,然後突然運行。

還要記住,%會導致scala版本附加到它的名稱。而%%明確定義名稱。有時這會在使用%時導致錯誤,因爲它沒有可用於該scala版本的版本。轉到存儲庫並明確輸入軟件包的名稱以解決此問題。

+0

非常感謝。我去了maven回購站,看到github上說的版本不在那裏。用0.0.10代替0.1.2解決了它 - sbt正確啓動。謝謝您的幫助。 – Jake

+0

歡迎您。爲以後添加書籤。 ;-)這種事情發生很多。 –

1

ensime 0.1.2僅適用於sbt版本0.13.x.如果這是一個新項目,你可以考慮使用當前版本的sbt。通常情況下,您需要創建project/build.properties,其中包含sbt.version=0.13.0

相關問題