(Я также поднял проблему GitHub для этого - https://github.com/googleapis/google-cloud-java/issues/4095)
У меня есть последние версии следующих 2 зависимостей для Apache Beam:
Зависимость 1 - google-cloud-dataflow-java-sdk-all
(Распространение 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 - beam-runners-google-cloud-dataflow-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 отлично работает с этими двумя зависимостями. Мне нужно добавить следующую (третью) зависимость для независимой подписки на паб Google Cloud/ sub вне конвейера Apache Beam:
google-cloud-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
внутренне, однако это противоречит (согласованной) версии, используемой зависимостью pub / sub Google.
Могу ли я что-нибудь сделать, чтобы обойти это?Могу ли я как-то изолировать подчиненные зависимости с помощью Maven?