你能在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
}