【问题标题】:SBT git dependency produces error if scalaVersions different如果 scalaVersions 不同,SBT git 依赖项会产生错误
【发布时间】:2012-05-10 14:21:16
【问题描述】:

所以我在 Scala 中使用 Play 2,设置了一些依赖项,我想我在解决 SBT 中的一个错误。其他人见过这样的吗?

我尝试在 Build.scala 中添加knockoff as directed, 因此:

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

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

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

[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)

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

【问题讨论】:

  • 看看 SBT 分类器只依赖于发布 jars 而不是源代码或 javadoc。看到这个:github.com/harrah/xsbt/wiki/Library-Management
  • 具有该依赖项的标准(非 Play)sbt 项目在“更新”时不会显示此错误。从堆栈跟踪(感谢发布它)看来,问题出在 PlayCommands 上,而不是来自 sbt(尽管有包名)。
  • 好主意,我尝试设置一个最小的 sbt 项目,看看我是否可以复制你的结果,但我看到了同样的事情。可以看项目here;它只是 sbt 文档中的“hello”项目,添加了这个 RootProject 依赖项。我将控制台输出粘贴到自述文件中。你怎么看?
  • @Brian,库依赖不是我想要的,我真的想要一个子项目,因为我打算分叉它并稍微弄乱它。不过,我不知道如何将图书馆管理理念应用到子项目中。有没有这样的例子?

标签: git scala sbt playframework-2.0


【解决方案1】:

呃。抱歉浪费您的时间,Interwebs。

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

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

【讨论】:

  • 我相信这里有两个可能有用的问题需要跟进。首先,play 不应该因为这样一个无益的信息而死(它不应该调用 right.value)。其次,我认为 sbt 应该提供更好的错误消息,甚至根本不出错,并且可能会给出警告。第二个,请用 sbt 打开一个 bug。
  • @joeltruher 实际上,你为我节省了很多时间;)
  • 我在这里加了点盐,只是做一个play clean-all解决了这个问题!
猜你喜欢
  • 1970-01-01
  • 2016-06-19
  • 2018-04-10
  • 2019-10-28
  • 1970-01-01
  • 1970-01-01
  • 2016-12-18
  • 2018-03-20
  • 2019-04-02
相关资源
最近更新 更多