Привет, Крис. Извините, что проигнорировал ваш предыдущий ответ. У меня есть упрощенная установка для подтверждения концепции мастерства. Я обошел конфликт, разделив проекты (как в моем случае, я имел дело с издателем Pub / Sub и проектом Dataflow). Это действительно не оптимально, но пока подойдет. Спасибо за внимание, я буду следить за этой проблемой.
кже поднял вопрос GitHub для этого -https://github.com/googleapis/google-cloud-java/issues/4095)
У меня есть последние версии следующих 2 зависимостей для Apache Beam:
Зависимость 1 -Google-облако потоков данных, Java-СДК-все
(Дистрибутив Apache Beam, разработанный для упрощения использования Apache Beam в службе облачных данных Google -https://mvnrepository.com/artifact/com.google.cloud.dataflow/google-cloud-dataflow-java-sdk-all)
<dependency>
<groupId>com.google.cloud.dataflow</groupId>
<artifactId>google-cloud-dataflow-java-sdk-all</artifactId>
<version>2.5.0</version>
</dependency>
Зависимость 2 -лучевые бегуны-Google-облако Java-потока данных
(Я предполагаю, что это позволяет реально запустить конвейер Beam внутри облачного потока данных Google)
https://mvnrepository.com/artifact/org.apache.beam/beam-runners-google-cloud-dataflow-java
<dependency>
<groupId>org.apache.beam</groupId>
<artifactId>beam-runners-google-cloud-dataflow-java</artifactId>
<version>2.8.0</version>
</dependency>
Установка Maven отлично работает с этими 2 зависимостями. Мне нужно добавить следующую (3-ю) зависимость для независимой подписки на паб / подпункт Google Cloud вне конвейера Apache Beam:
Google-облако PubSub
https://mvnrepository.com/artifact/com.google.cloud/google-cloud-pubsub
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-pubsub</artifactId>
<version>1.53.0</version>
</dependency>
(Это последняя версия). После того, как это добавлено, я получаю следующий конфликт после того, как я делаюmvn clean install
:
Could not resolve version conflict among [com.google.cloud:google-cloud-pubsub:jar:1.53.0 -> com.google.cloud:google-cloud-core-grpc:jar:1.53.0 -> io.grpc:grpc-protobuf:jar:1.16.1 -> io.grpc:grpc-core:jar:1.16.1, com.google.cloud:google-cloud-pubsub:jar:1.53.0 -> com.google.cloud:google-cloud-core-grpc:jar:1.53.0 -> io.grpc:grpc-protobuf:jar:1.16.1 -> io.grpc:grpc-protobuf-lite:jar:1.16.1 -> io.grpc:grpc-core:jar:1.16.1, com.google.cloud:google-cloud-pubsub:jar:1.53.0 -> io.grpc:grpc-netty-shaded:jar:1.16.1 -> io.grpc:grpc-core:jar:[1.16.1,1.16.1], com.google.cloud:google-cloud-pubsub:jar:1.53.0 -> io.grpc:grpc-stub:jar:1.16.1 -> io.grpc:grpc-core:jar:1.16.1, com.google.cloud:google-cloud-pubsub:jar:1.53.0 -> io.grpc:grpc-auth:jar:1.16.1 -> io.grpc:grpc-core:jar:[1.16.1,1.16.1], com.google.cloud.dataflow:google-cloud-dataflow-java-sdk-all:jar:2.5.0 -> org.apache.beam:beam-sdks-java-io-google-cloud-platform:jar:2.5.0 -> io.grpc:grpc-core:jar:1.2.0, com.google.cloud.dataflow:google-cloud-dataflow-java-sdk-all:jar:2.5.0 -> org.apache.beam:beam-sdks-java-io-google-cloud-platform:jar:2.5.0 -> io.grpc:grpc-netty:jar:1.2.0 -> io.grpc:grpc-core:jar:[1.2.0,1.2.0], com.google.cloud.dataflow:google-cloud-dataflow-java-sdk-all:jar:2.5.0 -> org.apache.beam:beam-sdks-java-io-google-cloud-platform:jar:2.5.0 -> com.google.cloud.bigtable:bigtable-protos:jar:1.0.0-pre3 -> io.grpc:grpc-core:jar:1.5.0, com.google.cloud.dataflow:google-cloud-dataflow-java-sdk-all:jar:2.5.0 -> org.apache.beam:beam-sdks-java-io-google-cloud-platform:jar:2.5.0 -> com.google.cloud.bigtable:bigtable-client-core:jar:1.0.0 -> io.grpc:grpc-core:jar:1.7.0, com.google.cloud.dataflow:google-cloud-dataflow-java-sdk-all:jar:2.5.0 -> org.apache.beam:beam-sdks-java-io-google-cloud-platform:jar:2.5.0 -> com.google.cloud.bigtable:bigtable-client-core:jar:1.0.0 -> io.opencensus:opencensus-contrib-grpc-util:jar:0.7.0 -> io.grpc:grpc-core:jar:1.6.1, com.google.cloud.dataflow:google-cloud-dataflow-java-sdk-all:jar:2.5.0 -> org.apache.beam:beam-sdks-java-io-google-cloud-platform:jar:2.5.0 -> io.grpc:grpc-all:jar:1.2.0 -> io.grpc:grpc-core:jar:[1.2.0,1.2.0], com.google.cloud.dataflow:google-cloud-dataflow-java-sdk-all:jar:2.5.0 -> org.apache.beam:beam-sdks-java-io-google-cloud-platform:jar:2.5.0 -> io.grpc:grpc-all:jar:1.2.0 -> io.grpc:grpc-okhttp:jar:1.2.0 -> io.grpc:grpc-core:jar:[1.2.0,1.2.0], com.google.cloud.dataflow:google-cloud-dataflow-java-sdk-all:jar:2.5.0 -> org.apache.beam:beam-sdks-java-io-google-cloud-platform:jar:2.5.0 -> io.grpc:grpc-all:jar:1.2.0 -> io.grpc:grpc-protobuf-nano:jar:1.2.0 -> io.grpc:grpc-core:jar:1.2.0
Я не получаю никакого конфликта установки Maven, если удаляю зависимости Apache Beam и сохраняюgoogle-cloud-pubsub
зависимость.
Существует отдельный менеджер зависимостей Google 'BOM' (ведомость материалов), который должен управлять зависимостями зависимостей Google Cloud, но это не решает конфликт для меня:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-bom</artifactId>
<version>0.71.0-alpha</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
Я последовал за ответом на этот вопрос -
Как мне разрешить конфликт зависимостей в Maven?
и я определил, что
com.google.cloud:google-cloud-pubsub:jar:1.53.0
имеет подчиненную зависимость от:
io.grpc:grpc-core:jar:1.16.1
com.google.cloud.dataflow:google-cloud-dataflow-java-sdk-all:jar:2.5.0
имеет подчиненные зависимости от различных версий:
io.grpc:grpc-core:jar
(GRPC - это высокопроизводительная универсальная среда RPC с открытым исходным кодом)
Если я добавлюio.grpc:grpc-core:jar:1.6.1
как явная зависимость от моего POM-файла, он не «закрепляет» зависимость, так как он все еще включается как подчиненная зависимостьcom.google.cloud.dataflow:google-cloud-dataflow-java-sdk-all:jar:2.5.0
.
В следующем выпуске GitHub garrettjonesgoogle подтверждает 21 февраля, что google-cloud-bom не закрепляет версию для io.grpc: grpc-core:
https://github.com/googleapis/google-cloud-java/issues/2890
Кажется, что зависимость Apache Beam управляет различными версиямиio.grpc:grpc-core:jar
внутренне, однако, это противоречит (согласованной) версии, используемой зависимостью Google pub / sub.
Что я могу сделать, чтобы обойти это? Могу ли я как-то изолировать подчиненные зависимости с помощью Maven?