2014-01-27 129 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