Можете ли вы определить псевдоним зависимости в 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
  }
Другие вопросы по тегам