Как переопределить зависимость плагина sbt?

Я написал плагин sbt под названием sbt-jumi, который реализует интеграцию SBT для Джуми. Прямо сейчас плагин sbt-jumi зависит от текущего выпуска Jumi.

вот соответствующая строка из плагина построить.sbt:

libraryDependencies += "fi.jumi" % "jumi-launcher" % "0.5.376"

и a пользователей плагина добавит это к его :

addSbtPlugin("fi.jumi.sbt" % "sbt-jumi" % "0.1.0")

Теперь предположим, что jumi 0.6.400 выпущен и он обратно совместим. как пользователь плагина sbt-jumi может настроить его на использование Jumi 0.6.400 без необходимости выпуска новой версии плагина?

вот как это сделать в Maven. но как это сделать в sbt?

1 ответов


переопределение зависимостей плагинов происходит так же, как переопределение обычных зависимостей, за исключением того, что конфигурация должна быть введена в project/plugins.sbt. Переопределение зависимостей объясняется в Управление Библиотеки. Вот резюме:

если версия, которую вы хотите использовать больше чем зависимость, которую вы получите транзитивно, sbt будет использовать большую версию по умолчанию. Можно изменить диспетчер конфликтов, чтобы изменить значение по умолчанию поведение-например, это создаст ошибку при конфликте:

conflictManager := ConflictManager.strict

другими словами, это в project/plugins.sbt будет работать:

libraryDependencies += "fi.jumi" % "jumi-launcher" % "0.6.400"

вы можете проверить свои зависимости плагинов, используя reload plugins а то show update. Теперь он должен показывать более старую версию как "(выселен)".

если версия, которую вы хотите использовать, ниже чем зависимость по умолчанию, то вам нужно будет переопределить по-другому. Один из способов-заставить зависимость:

libraryDependencies += "fi.jumi" % "jumi-launcher" % "0.4.350" force()

другой способ-использовать dependencyOverrides установка:

dependencyOverrides += "fi.jumi" % "jumi-launcher" % "0.4.350"

разница между двумя методами заключается в том, что переопределение не ввести прямую зависимость. Я не думаю, что разница имеет значение для плагинов, но для опубликованных артефактов она имеет некоторые различия.