你能在sbt

时间:2017-04-06 08:39:47

标签: scala sbt ivy finagle twitter-finagle

Recently Finagle库的开始取决于libthrift的自定义分支"com.twitter" % "libthrift"。常规的是"org.apache.thrift" % "libthrift"。两者在同一个包中包含相同的类。

虽然可以手动清理类路径,但是未来每个开发人员都可能会意识到这一点 - 特别是通过瞬态依赖性。

我们开发了一个内部SBT插件,我们所有的项目都在使用,可以用于共享设置。我正在寻找一种聪明的方式来告诉SBT,依赖只是一个别名。在依赖项解析期间,理想情况下它会将ModuleID视为具有相同的组织(别名)。

1 个答案:

答案 0 :(得分:0)

问题是用户的libraryDependencies优先于插件中的任何覆盖。可能有效的是覆盖allDependencies

allDependencies :=
  allDependencies.value.map { module =>
    if (module.organization == "org.apache.thrift" && module.name == "libthrift")
      module.copy(organization = "com.twitter")
    else module
  }