有一个项目依赖于
google-api-client
和google-api-services-drive
。
google-api-client
版本看起来像这样:1.23.0
,并且 github 上有这个库的变更日志。
google-api-services-drive
版本看起来像这样:v3-rev105-1.23.0
,并且没有明确的变更日志。同一版本号有许多不同的 rev
后缀,如 v3-rev116-1.23.0
、v3-rev135-1.23.0
等。看起来它是每周构建的,修订号不断增加。
问题是:客户端和服务版本如何兼容?是否可以安全地假设,任何版本为
v3-revXXX-1.23.0
的服务都与客户端 1.23.0
兼容,并且任何版本为 v3-revYYYYMMDD-1.32.1
的 api 服务都与 api 客户端 1.32.1
兼容?
虽然看起来常见的语义版本控制部分表明了兼容性,但事实似乎并非如此。
但是,有一种简单的方法可以找出特定
google-api-client
需要哪个 google-api-service
版本。问题是,google-api-service
依赖于 google-api-client
,您可以...对,您可以在 POM 文件中找到它!
查看不同服务的 POM 文件,有时服务版本是
v3-rev20210201-1.31.0
,它取决于客户端版本 1.31.1
,而 v3-rev20210612-1.31.0
取决于 1.31.5
或者更糟糕:服务版本v3-rev20220508-1.32.1
取决于客户端版本1.34.0
。
为了帮助其他有需要的人,我在访问谷歌表格时遇到了同样的问题。我的解决方案是使用以下依赖项:
<dependency>
<groupId>com.google.apis</groupId>
<artifactId>google-api-services-sheets</artifactId>
<version>v4-rev20230815-2.0.0</version>
</dependency>
也许这种情况的解决方案是依赖:
<dependency>
<groupId>com.google.apis</groupId>
<artifactId>google-api-services-androidpublisher</artifactId>
<version>v3-rev20230905-2.0.0</version>
</dependency>