2012-04-30 22 views
1

所以我在Scala中使用Play 2,设置了一些依赖关系,我想我在SBT中发痒了一个bug。任何人看到这样的事情?如果scalaVersions不同,SBT git dependency会产生错误

我尝试在Build.scala as directed,从而增加knockoff

val knockoff = RootProject(uri("git://github.com/tristanjuricek/knockoff.git")) 

val main = 
    PlayProject(appName, appVersion, appDependencies, mainLang = SCALA) 
    .dependsOn(knockoff) 

,然后运行它。出于某种原因,它寻找源和javadoc罐子。 (为什么?)

[warn] [NOT FOUND ] com.tristanhunt#knockoff_2.9.1;0.8.0-16!knockoff_2.9.1.jar(src) (88ms) 
[warn] ==== Typesafe Releases Repository: tried 
[warn] http://repo.typesafe.com/typesafe/releases/com/tristanhunt/knockoff_2.9.1/0.8.0-16/knockoff_2.9.1-0.8.0-16-sources.jar 
[warn] [NOT FOUND ] com.tristanhunt#knockoff_2.9.1;0.8.0-16!knockoff_2.9.1.jar(doc) (86ms) 
[warn] ==== Typesafe Releases Repository: tried 
[warn] http://repo.typesafe.com/typesafe/releases/com/tristanhunt/knockoff_2.9.1/0.8.0-16/knockoff_2.9.1-0.8.0-16-javadoc.jar 
[warn] :::::::::::::::::::::::::::::::::::::::::::::: 
[warn] ::    FAILED DOWNLOADS   :: 
[warn] ::^see resolution messages for details^:: 
[warn] :::::::::::::::::::::::::::::::::::::::::::::: 
[warn] :: com.tristanhunt#knockoff_2.9.1;0.8.0-16!knockoff_2.9.1.jar(src) 
[warn] :: com.tristanhunt#knockoff_2.9.1;0.8.0-16!knockoff_2.9.1.jar(doc) 
[warn] :::::::::::::::::::::::::::::::::::::::::::::: 

这些缺少的罐子不应该是致命的,但它们是:

[error] {file:/home/joel/TEST2/bar/}bar/*:update: sbt.ResolveException: download failed: com.tristanhunt#knockoff_2.9.1;0.8.0-16!knockoff_2.9.1.jar(src) 
[error] download failed: com.tristanhunt#knockoff_2.9.1;0.8.0-16!knockoff_2.9.1.jar(doc) 
[error] java.util.NoSuchElementException: Either.right.value on Left 
[error] Use 'last' for the full log. 

下面是一些堆栈跟踪:

[error] download failed: com.tristanhunt#knockoff_2.9.1;0.8.0-16!knockoff_2.9.1.jar(doc) 
java.util.NoSuchElementException: Either.right.value on Left 
at scala.Either$RightProjection.get(Either.scala:229) 
at sbt.PlayCommands$$anonfun$56.apply(PlayCommands.scala:606) 
at sbt.PlayCommands$$anonfun$56.apply(PlayCommands.scala:593) 
at sbt.Command$$anonfun$sbt$Command$$apply1$1$$anonfun$apply$6.apply(Command.scala:74) 
at sbt.Command$.process(Command.scala:92) 

其他项目作为依赖项工作好,但不是这个。

+0

看看SBT分类器只依赖于发布jar而不是源代码或javadoc。请参阅:https://github.com/harrah/xsbt/wiki/Library-Management – Brian

+0

具有该依赖关系的标准(非Play)sbt项目在'update'时不显示此错误。从堆栈跟踪(感谢发布它)看来,麻烦来自PlayCommands,它不是来自sbt(尽管包名称)。 –

+0

好主意,我试着设置一个最小的sbt项目来看看我是否可以复制你的结果,但我看到的是同样的事情。你可以在这里看到这个项目(https://github.com/truher/sbt-dependency-test);它只是sbt文档中的“hello”项目,添加了一个RootProject依赖关系。我将控制台输出粘贴到README中。你怎么看? –

回答

4

呃。对不起,浪费你的时间,Interwebs。

问题在于“父”和“子”项目指定了不同的scalaVersions。

父母是2.9.1,孩子2.9.2。将其中一个更改为与另一个相同可修复此问题。

+0

但我相信在这里有两个可能有用的问题需要跟进。首先,游戏不应该随着这种无益的消息而消亡(它不应该在不应该的时候调用right.value)。其次,我相信sbt应该提供更好的错误信息,甚至不会出错,也许会发出警告。第二,请用sbt打开一个bug。 –

+0

好主意,完成。 –

+1

@ joeltruher实际上,你为我节省了很多时间;) –

相关问题