2017-04-06 60 views
0

Recently的欺騙庫取決於libthrift定製叉子"com.twitter" % "libthrift"開始。常規的是"org.apache.thrift" % "libthrift"。兩者在同一個包中包含相同的類。你能在SBT定義依賴別名

雖然可以手動清理classpath中,它可能是,並不是每一個開發商會意識到在未來的 - 尤其是通過短暫的依賴關係。

我們已經制定了內部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 
    }