Можете ли вы определить псевдоним зависимости в sbt
Недавно библиотека Finagle была запущена в зависимости от пользовательского форка libthrift
как "com.twitter" % "libthrift"
, Обычный "org.apache.thrift" % "libthrift"
, Оба содержат одинаковые классы в одном пакете.
Хотя можно вручную очистить путь к классам, это может быть тем, о чем не все разработчики будут знать в будущем, особенно через временные зависимости.
Мы разработали внутренний плагин SBT, который используют все наши проекты, который можно использовать для общих настроек. Я ищу умный способ сказать SBT, что зависимость - это просто псевдоним. Во время разрешения зависимостей в идеале он будет обрабатывать оба ModuleID так, как если бы они имели одну и ту же организацию (с псевдонимом).
1 ответ
Беда в том, что пользователь libraryDependencies
будет иметь приоритет над любыми переопределениями в вашем плагине. Что может работать, имеет первостепенное значение allDependencies
:
allDependencies :=
allDependencies.value.map { module =>
if (module.organization == "org.apache.thrift" && module.name == "libthrift")
module.copy(organization = "com.twitter")
else module
}