我正在尝试使用新的Google Photos API进行某些操作,但是在确定要包括哪些Maven依赖项时遇到了问题。因此,我尝试编写了最简单的Google Photos API程序:
Main.java:
package com.foo.eg.gphotos_plain;
import com.google.photos.library.v1.PhotosLibrarySettings;
public class Main {
public static void main(String[] args) {
PhotosLibrarySettings.Builder builder = PhotosLibrarySettings.newBuilder();
}
}
但出现编译错误:
错误:(7,78)java:无法访问com.google.api.gax.rpc.ClientSettings 找不到com.google.api.gax.rpc.ClientSettings的类文件
pom.xml :
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.foo.eg</groupId>
<artifactId>gphotos-plain</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>com.google.photos.library</groupId>
<artifactId>google-photos-library-client</artifactId>
<version>1.1.0</version>
</dependency>
</dependencies>
</project>
https://developers.google.com/photos/library/guides/get-started-java处的文档仅记录了一种依赖项:<artifactId>google-photos-library-client</artifactId>
。
因此,我查看了 google-photos-library-client 传递依赖项,它包括至少八个具有工件名称的名称,例如gax-grpc,grpc-protobuf,...(请参阅: https://search.maven.org/artifact/com.google.photos.library/google-photos-library-client/1.1.0/jar)但所有这些传递依赖项都具有<scope>runtime</scope>
,因此不在我的编译类路径中,因此不在编译错误的原因。
所以我的问题是:
1)为什么这些传递依赖项不是<scope>compile</scope>
,因为如果它们是行家,则会将它们引入我的编译类路径中?为什么要将所有这些运行时依赖项都复制到我的pom.xml中,仅将它们更改为<scope>compile</scope>
?
2)您将添加到pom.xml哪些依赖项以使此简单的单行程序工作?
答案 0 :(得分:0)
更新:
Google Photos开发人员小组已经确认,此Stack Overflow帖子中记录的问题确实是maven配置问题。
此问题已被其(Google Photos Library API)问题跟踪器报告并接受,可以在以下位置进行跟踪:
https://issuetracker.google.com/issues/129261445#comment2
总而言之,为maven工件google-photos-library-client
版本1.1.0
定义maven依赖项的方式存在问题,它们的目标是在Java客户端库的下一版本中进行修复。