2014-01-27 100 views
2

我想添加"com.google.api-ads" % "adwords-axis" % "1.23.0"作爲依賴於build.sbt文件的播放2.2.1項目。當我生成Eclipse項目文件做play eclipse,我得到以下錯誤:SBT抱怨Maven的RELEASE作爲(傳遞)依賴的版本?

[error] (*:update) sbt.ResolveException: unresolved dependency: com.google.http-client#google-http-client-jackson2;RELEASE: not found 

後來我發現,adwords-axis取決於ads-lib其具有以下依賴(注意RELEASE版):

<dependency> 
    <groupId>com.google.http-client</groupId> 
    <artifactId>google-http-client-jackson2</artifactId> 
    <version>RELEASE</version> 
</dependency> 

我讀的版本在Maven的這個answer被指定爲RELEASE

是否SBT不允許指定版本RELEASE?如果是這樣,是否有解決方法使用adwords-axis依賴關係?

回答

0

我不認爲這是在SBT這樣的功能,它很可能也不是因爲API可能完全兩個發行版之間是否發生變化,那麼你的項目將下載任何新版本讓你構建絕後,是個好主意你從你的VCS簽出一箇舊版本,它不能確定它會編譯等等。所以這是一個由庫的項目維護者做出的非常糟糕的決定,它使用RELEASE作爲任何依賴的版本。

你可以做的是弄清楚它現在會解決什麼版本,如果它真的起作用,然後用該特定版本的google-http-client-jackson2覆蓋傳遞依賴並直接依賴它。

因此,例如,(不,我只是隨意猜測,0.17.0或更新版本,RC將是一個很好的版本):

libraryDependencies := Seq(
    "com.google.api-ads" % "adwords-axis" % "1.23.0", 
    "com.google.http-client" % "google-http-client-jackson2" % "1.17.0-rc" 
) 
+0

我已經看到不包括Maven的傳遞依賴。我會嘗試你所建議的並回來。謝謝 – livinston

+0

也有人支持在sbt中以幾種方式排除傳遞依賴,但我猜你實際上需要http-client。 – johanandren