Какие maven зависимости требуются в дополнение к артефакту google-photos-library-client - PullRequest
0 голосов
/ 23 марта 2019

Я пытаюсь что-то сделать с помощью нового API Google Фото, но у меня возникают проблемы с определением того, какие зависимости 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>, потому что, если бы они были maven, они занесли бы их в мой путь к классам компиляции? Почему я должен копировать все эти зависимости времени выполнения в мой pom.xml, чтобы просто изменить их на <scope>compile</scope>?

2) Какие зависимости вы бы добавили в pom.xml, чтобы эта простая однострочная программа работала?

1 Ответ

0 голосов
/ 23 апреля 2019

ОБНОВЛЕНИЕ:

Группа разработчиков Google Photos признала, что проблема, описанная в этом сообщении о переполнении стека, действительно является проблемой конфигурации maven.

Эта проблема быласообщается и принимается их трекером проблем (API библиотеки Google Photos) и может отслеживаться по адресу:

https://issuetracker.google.com/issues/129261445#comment2

Таким образом, существует проблема с способомЗависимости maven определены для артефакта maven google-photos-library-client версия 1.1.0, и они нацелены на исправление в следующем выпуске клиентской библиотеки Java.

...