例えばこういうのですね。実際には Jetty 9 しか使わないのに sbt の初回起動時に Jetty 6 とか Tomcat とかをダウンロードしないといけないのを抑止したい。
xsbt-web-plugin がこうなっているのは、利用する側が sbt プラグインのための libraryDepenencies を自分で追加しなくても単に build 設定の方に必要な container scope を指定するだけでよいという利点はあるのかなとは思います(推測ですが)。
ですが、ivy が jar ファイルをサチる&ダウンロードする速度は遅い上に直列化されているので、少しでも jar ファイルのダウンロードは可能な限り減らしたいのが人情です。
Twitter でぼそっとつぶやいたら、賢者の声が。
sbt plugin が依存していて絶対使わない libraryDependencies を exclude できたら相当嬉しいのだが、やり方がわからない。ドキュメント見た限りできなさそうな。
— Kazuhiro Sera (@seratch_ja) April 17, 2014
@xuwei_k 具体的にはこれとか Jetty の一つのバージョンしか使わないのに全部ダウンロードせざるを得なくて、そういうのを使う側で exclude(...) と同じように無視できたら嬉しいなと。 https://t.co/isBQkdWDQc
— Kazuhiro Sera (@seratch_ja) April 17, 2014
@seratch_ja https://t.co/l3RrNxFnaw addSbtPluginというのは結局libraryDependencies追加してるだけだから、Build.scalaで書くのと同じようにplugin.sbtでexclude書いたらうまくいかないですかね?
— Kenji Yoshida (@xuwei_k) April 17, 2014
ということで
addSbtPlugin("com.earldouglas" % "xsbt-web-plugin" % "0.9.0" excludeAll(
ExclusionRule(organization = "org.mortbay.jetty"),
ExclusionRule(organization = "org.apache.tomcat.embed")
))
のように普通に exclude/excludeAll を書くだけでよかったのでした。