SBT抱怨Maven的RELEASE是(传递)依赖的版本?

时间:2014-01-27 09:44:47

标签: maven playframework-2.0 sbt playframework-2.2

我正在尝试在Play 2.2.1项目的"com.google.api-ads" % "adwords-axis" % "1.23.0"文件中添加build.sbt作为依赖项。当我play eclipse生成eclipse项目文件时,我收到以下错误:

[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>

我读到在answer中可以在Maven中将版本指定为RELEASE

SBT是否不允许将版本指定为RELEASE?如果是,是否有使用adwords-axis依赖项的解决方法?

1 个答案:

答案 0 :(得分: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"
)