我正在尝试在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
依赖项的解决方法?
答案 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"
)