你能在SBT定义依赖别名

问题描述:

Recently的欺骗库取决于libthrift定制叉子"com.twitter" % "libthrift"开始。常规的是"org.apache.thrift" % "libthrift"。两者在同一个包中包含相同的类。你能在SBT定义依赖别名

虽然可以手动清理classpath中,它可能是,并不是每一个开发商会意识到在未来的 - 尤其是通过短暂的依赖关系。

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

麻烦的是,用户的libraryDependencies将优先于你的插件的任何覆盖。什么可能工作是压倒性的allDependencies

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