gpt4 book ai didi

plugins - 如何覆盖 sbt 插件的依赖?

转载 作者:行者123 更新时间:2023-12-03 10:56:49 25 4
gpt4 key购买 nike

我写了一个名为 sbt-jumi 的 sbt 插件为 Jumi 实现 sbt 集成.现在 sbt-jumi 插件依赖于当前的 Jumi 版本。

这是插件 build.sbt 中的相关行:

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

该插件的用户会将其添加到他的 project/plugins.sbt文件:
addSbtPlugin("fi.jumi.sbt" % "sbt-jumi" % "0.1.0")

现在假设 Jumi 0.6.400 已发布并且向后兼容。 sbt-jumi 插件的用户如何将其配置为使用 Jumi 0.6.400,而不必发布新版本的插件?

Here is how to do it in Maven.但是如何在 sbt 中做到这一点?

最佳答案

覆盖插件的依赖与覆盖普通依赖的方式相同,除了必须将配置输入到 project/plugins.sbt .覆盖依赖在 Library Management 中有解释.这是一个总结:

如果您希望使用的版本更高 与您将传递的依赖项相比,默认情况下 sbt 将使用更大的版本。您可以更改冲突管理器以更改默认行为 - 例如,这将在冲突时产生错误:

conflictManager := ConflictManager.strict

换句话说,这在 project/plugins.sbt会工作:
libraryDependencies += "fi.jumi" % "jumi-launcher" % "0.6.400"

您可以使用 reload plugins 检查您的插件依赖项然后 show update .它现在应该将旧版本显示为“(EVICTED)”。

如果您希望使用的版本较低 比默认依赖项,那么您将需要以不同的方式覆盖。一种方法是强制依赖:
libraryDependencies += "fi.jumi" % "jumi-launcher" % "0.4.350" force()

另一种方法是使用 dependencyOverrides环境:
dependencyOverrides += "fi.jumi" % "jumi-launcher" % "0.4.350"

这两种方法之间的区别在于覆盖不会引入直接依赖关系。我不认为插件的区别很重要,但对于已发布的工件,它有 some differences .

关于plugins - 如何覆盖 sbt 插件的依赖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18065982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com