2017-04-06 4 views
0

Recentlylibthriftというカスタムフォークに応じて開始したFinagleライブラリは"com.twitter" % "libthrift"と定義できますか。通常のものは"org.apache.thrift" % "libthrift"です。どちらも同じパッケージに同じクラスが含まれています。依存性エイリアスを

クラスパスを手動でクリーンアップすることは可能ですが、将来的にはすべての開発者が認識しているとは限らないものがあります。特に一時的な依存関係があります。

私たちは、すべてのプロジェクトで使用されている共有設定用の内部SBTプラグインを開発しました。私は、依存関係はちょうどエイリアスであるとSBTに教える巧妙な方法を探しています。依存関係の解決中、理想的には、両方のModuleIDを同じ組織(エイリアス)であるかのように扱います。

答えて

0

問題は、ユーザーのlibraryDependenciesがプラグインのオーバーライドより優先されることです。何がうまくいくかは、allDependencies

allDependencies := 
    allDependencies.value.map { module => 
    if (module.organization == "org.apache.thrift" && module.name == "libthrift") 
     module.copy(organization = "com.twitter") 
    else module 
    }