2017-05-03 12 views
4

私はSBTプラグインを作成しています。 Circe JSONライブラリを使用したいと思いますが、Scala 2.10でMacro Paradiseコンパイラプラグインが必要です。SBT Plugin:下流に伝播されない依存関係としてコンパイラプラグインを追加するには?

通常、コンパイラプラグインはbuild.sbtに、SBTプラグインはproject/plugins.sbtに追加します。

SBTプラグインをビルドするとき、他のプラグインは依存関係になるので、それらをbuild.sbtに置き、SBTプラグインを使用するプロジェクトに伝播されます。私は私のSBTプラグインのbuild.sbtで次のスニペット置くとき

は:

addCompilerPlugin("org.scalamacros" % "paradise" % "2.1.0" cross CrossVersion.full) 

をパラダイスコンパイラプラグインは、下流のプロジェクトに伝播していますか?

答えて

5

コンパイラプラグインはデフォルトでは伝播されませんが、実際にはダウンストリームユーザーが依存関係として必要となり、この要件を回避する方法はありません。

理由は簡単ですが、そのコードは別のコンパイル単位でコンパイルされるため、コンパイラプラグインに依存する機能がエンドコードベースにある場合は、明示的に依存関係を追加するためのこのプラグインに関する注意。

これは役に立ちます。たとえば、本当に人気のあるモノクラブhereを参考にしてください。アノテーションは、例えば楽園なしでは展開されないため、エンドユーザーが必要とするすべての問題です。

引用

あなたは、このような@Lensesなどマクロのアノテーションを使用したい場合は、あなたも含める必要があります。

addCompilerPlugin("org.scalamacros" %% "paradise" % "2.1.0" cross CrossVersion.full) 
関連する問題