Как переопределить зависимость плагина 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"
разница между двумя методами заключается в том, что переопределение не ввести прямую зависимость. Я не думаю, что разница имеет значение для плагинов, но для опубликованных артефактов она имеет некоторые различия.