sbt 0.13.2-M3至0.13.5-RC3问题

时间:2014-05-16 17:25:51

标签: sbt

我有问题从sbt版本0.13.2-M3移动到0.13.5-RC3,其中13.2-M3成功解决的传递依赖性无法通过0.13.5-RC3解决。

我得到了未解决的依赖错误,其中版本是"正在工作@"。

当我有一个包含两个子项目的多项目构建时会发生这种情况,其中一个子项目依赖于另一个子项目。他们都有依赖关系,他们的maven poms指定了一个共同的父母(虽然我不确定这是否是一个红鲱鱼)。

仅当依赖关系尚未在本地常春藤缓存中时才会发生。

最小的repro Build是:

import sbt._
import Keys._

object BarBuild extends Build {

  val buildSettings = Seq(scalaVersion := "2.10.3")

  lazy val root = Project(
    id = "bar",
    base = file(".")
  ) aggregate(withSolrCore, withSolrClient)

  lazy val withSolrCore = Project(
    id = "withSolrCore",
    base = file("solrCore"),
    settings = buildSettings ++ Seq(
      libraryDependencies ++= Seq("org.apache.solr" % "solr-core" % "4.7.1")
    )
  ) dependsOn (withSolrClient)

  lazy val withSolrClient = Project(
    id = "withSolrClient",
    base = file("solrClient"),
    settings = buildSettings ++ Seq(
      libraryDependencies ++= Seq("org.apache.solr" % "solr-solrj" % "4.7.1")
    )
  )
}

使用build.properties' sbt.version=0.13.5-RC3我看到很多错误,例如

[warn]  module not found: org.apache.lucene#lucene-analyzers-kuromoji;working@heraclitus.local

[error] unresolved dependency: org.apache.lucene#lucene-core;working@heraclitus.local: not found

sbt.version=0.13.2-M3一切都很好。

我不确定我是做错了什么或是某事与某事有关,但此时我怀疑是后者。

感谢。

1 个答案:

答案 0 :(得分:3)

这是一个已知的常春藤问题。解决方法是覆盖完全传递闭包中的所有依赖项的版本,这些版本打破了要使用的“真实”版本。 (我通过在存根项目上运行更新来获得真实的,只有问题依赖于旧版本的sbt,0.13.2,这是pre-ivy-bug),比如,

dependencyOverrides ++= Set(
  "com.google.guava" % "guava" % "14.0.1",
  "com.google.protobuf" % "protobuf-java" % "2.5.0",
  "com.googlecode.concurrentlinkedhashmap" % "concurrentlinkedhashmap-lru" % "1.2",
  "com.spatial4j" % "spatial4j" % "0.4.1",
  ...
)