有一个项目依赖于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-service都与api-client1.32.1
兼容?
虽然它可能看起来像常见的语义版本控制部分信号兼容性,但情况似乎并非如此。
然而,有一种简单的方法可以找出特定google-api-service
需要哪个google-api-client
版本。问题是,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
。
为了帮助其他需要帮助的人,我在访问google表单时遇到了同样的问题。我的解决方案是使用以下依赖项:
<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>