2013-03-24 20 views
3

我有一個傳遞性依賴關係,只是無法解析,我正在爲此而撕裂我的頭髮。SBT不會解決除Typesafe之外的任何存儲庫的傳遞依賴關係

具體的依賴關係是org.apache.maven.wagon#wagon-provider-api;1.0-beta-2!wagon-provider-api.jar,雖然我不確定哪個直接依賴包括它。

該文件在默認的Maven回購中仍然活着。出於某種原因,但是,SBT只是拒絕檢查有沒有它,雖然它高興的樣子有沒有其他的依賴關係:

[warn] [NOT FOUND ] org.apache.maven.wagon#wagon-provider-api;1.0-beta-2!wagon-provider-api.jar (52ms) 
[warn] ==== Typesafe Releases Repository: tried 
[warn] http://repo.typesafe.com/typesafe/releases/org/apache/maven/wagon/wagon-provider-api/1.0-beta-2/wagon-provider-api-1.0-beta-2.jar 
[warn] :::::::::::::::::::::::::::::::::::::::::::::: 
[warn] ::    FAILED DOWNLOADS   :: 
[warn] ::^see resolution messages for details^:: 
[warn] :::::::::::::::::::::::::::::::::::::::::::::: 
[warn] :: org.apache.maven.wagon#wagon-provider-api;1.0-beta-2!wagon-provider-api.jar 
[warn] :::::::::::::::::::::::::::::::::::::::::::::: 
[error] (*:update) sbt.ResolveException: download failed: org.apache.maven.wagon#wagon-provider-api;1.0-beta-2!wagon-provider-api.jar 
[error] Total time: 3 s, completed Mar 23, 2013 7:22:05 PM 

我已經從我的主目錄中刪除.ivy2.m2.sbt。我運行了sbt update。我一遍又一遍地運行了play cleanplay clean-all。來自SBT提示符的Runnings resolvers顯示Maven repo在列表中。

我已經嘗試下載jar並將其添加到我的常春藤緩存,我的常春藤資料庫,我的玩!庫。

還剩什麼可嘗試?

我Build.scala:

import sbt._ 
import Keys._ 
import play.Project._ 

object ApplicationBuild extends Build { 

    val appName   = "conspire" 
    val appVersion  = "1.0-SNAPSHOT" 

    val appDependencies = Seq(
    // Add your project dependencies here, 
    javaCore, 
    javaJdbc, 
    "mysql" % "mysql-connector-java" % "5.1.18", 
    "org.apache.cayenne.plugins" % "maven-cayenne-plugin" % "3.0.2", 
    "org.objectstyle.ashwood" % "ashwood" % "2.0", 
    "commons-collections" % "commons-collections" % "3.1", 
    "commons-lang" % "commons-lang" % "2.6", 
    "commons-logging" % "commons-logging" % "1.1" 
) 

    val main = play.Project(appName, appVersion, appDependencies).settings(
    externalResolvers += "Local Maven Repository" at "file:///"+Path.userHome+"/.m2/repository", 
    resolvers ++= Seq(DefaultMavenRepository, 
         "Objectstyle repository" at " http://objectstyle.org/maven2/") 
) 

} 

回答

1

嘗試

resolvers := // which overrides current resolvers 

,而不是

resolvers ++= // which appends to current resolvers 

不要問我要解釋,雖然,因爲我不知道爲什麼它的工作原理。剛剛有了一個類似的問題與JUnit和this link建議這樣做的話,這有助於...

+0

sbt總是以指定的順序從resovlers解決。可能會發生這樣的情況:ivy.xml/pom.xml文件中存在一個令人困惑的ivy.xml/pom.xml文件,因此它認爲它必須從它找到的第一個位置開始,這實際上是一個不好的存儲庫。 – jsuereth 2014-09-19 17:36:32

0

相反的:

resolvers := 

(尚未允許多個解析器的缺點),我發現,

resolvers += 

工作正常,並且不會顯示OP中的錯誤。

0

我有類似的問題。但是SBT甚至會在Maven回購庫中搜索,並且它所說的鏈接不起作用,實際上起作用。

我解決它的默認播放前塞入移動我自己的依賴:

val appDependencies = Seq(
    // Add your project dependencies here, 
    javaCore, 
    javaJdbc, 
    "mysql" % "mysql-connector-java" % "5.1.32" 
) 

val appDependencies = Seq(
    "mysql" % "mysql-connector-java" % "5.1.32", 
    javaCore, 
    javaJdbc  
) 

希望這可以幫助其他人。歡呼聲