26

Jumiのsbt 統合を実装する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 を使用するように設定するにはどうすればよいですか?

これを Maven で行う方法を次に示します。しかし、sbt でそれを行う方法は?

4

1 に答える 1

37

プラグインの依存関係のオーバーライドは、構成を に入力する必要があることを除いて、通常の依存関係のオーバーライドと同じ方法で行われます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)」と表示されるはずです。

使用したいバージョンがデフォルトの依存関係より低い場合は、別の方法でオーバーライドする必要があります。1 つの方法は、依存関係を強制することです。

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

別の方法は、次のdependencyOverrides設定を使用することです。

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

2 つの方法の違いは、オーバーライドによって直接の依存関係が導入されないことです。プラグインの違いは問題ではないと思いますが、公開されたアーティファクトの場合、いくつかの違いがあります。

于 2013-08-07T16:51:27.110 に答える