目前我在GCP (数据流)中使用apache beam 2.18.0,我想将其更新到2.20.0
问题是,如果我在pom文件中使用2.20.0而不是2.18.0,则会出现以下错误:
Caused by: org.eclipse.aether.collection.UnsolvableVersionConflictException: Could not resolve version conflict among [com.google.api:gax-grpc:jar:1.56.0 -> io.grpc:grpc-stub:jar:1.28.1 -> io.grpc:grpc-api:jar:1.28.1, com.google.api:gax-grpc:jar:1.56.0 -> io.grpc:grpc-auth:jar:1.28.1 -> io.grpc:grpc-api:jar:[1.28.1,1.28.1], com.google.api:gax-grpc:jar:1.56.0 -> io.grpc:grpc-protobuf:jar:1.28.1 -> io.grpc:grpc-api:jar:1.28.1, com.google.api:gax-grpc:jar:1.56.0 -> io.grpc:grpc-protobuf:jar:1.28.1 -> io.grpc:grpc-protobuf-lite:jar:1.28.1 -> io.grpc:grpc-api:jar:1.28.1, com.google.api:gax-grpc:jar:1.56.0 -> io.grpc:grpc-netty-shaded:jar:1.28.1 -> io.grpc:grpc-core:jar:[1.28.1,1.28.1] -> io.grpc:grpc-api:jar:[1.28.1,1.28.1], com.google.cloud:google-cloud-kms:jar:1.38.1 -> io.grpc:grpc-api:jar:1.28.1, com.google.cloud:google-cloud-datastore:jar:1.102.4 -> io.grpc:grpc-api:jar:1.28.1, org.apache.beam:beam-sdks-java-io-google-cloud-platform:jar:2.20.0 -> com.google.cloud:google-cloud-bigquerystorage:jar:0.120.1-beta -> io.grpc:grpc-api:jar:1.25.0, org.apache.beam:beam-sdks-java-io-google-cloud-platform:jar:2.20.0 -> com.google.cloud.bigtable:bigtable-client-core:jar:1.13.0 -> com.google.cloud:google-cloud-bigtable:jar:1.9.1 -> io.grpc:grpc-api:jar:1.26.0, org.apache.beam:beam-sdks-java-io-google-cloud-platform:jar:2.20.0 -> com.google.cloud.bigtable:bigtable-client-core:jar:1.13.0 -> com.google.api.grpc:grpc-google-cloud-bigtable-v2:jar:1.9.1 -> io.grpc:grpc-api:jar:1.26.0, org.apache.beam:beam-sdks-java-io-google-cloud-platform:jar:2.20.0 -> com.google.cloud.bigtable:bigtable-client-core:jar:1.13.0 -> com.google.api.grpc:grpc-google-cloud-bigtable-admin-v2:jar:1.9.1 -> io.grpc:grpc-api:jar:1.26.0, org.apache.beam:beam-sdks-java-io-google-cloud-platform:jar:2.20.0 -> com.google.cloud.bigtable:bigtable-client-core:jar:1.13.0 -> io.grpc:grpc-api:jar:1.26.0, org.apache.beam:beam-sdks-java-io-google-cloud-platform:jar:2.20.0 -> com.google.cloud:google-cloud-core-grpc:jar:1.92.2 -> io.grpc:grpc-api:jar:1.26.0, org.apache.beam:beam-sdks-java-io-google-cloud-platform:jar:2.20.0 -> com.google.cloud:google-cloud-spanner:jar:1.49.1 -> io.grpc:grpc-api:jar:1.26.0, org.apache.beam:beam-sdks-java-io-google-cloud-platform:jar:2.20.0 -> io.grpc:grpc-all:jar:1.25.0 -> io.grpc:grpc-api:jar:[1.25.0,1.25.0]]我见过其他有类似问题的question,但我看不出与apache beam有任何关系。
我应该添加或删除哪个依赖项?
这是我的pom文件的样子:
<modules>
...
</modules>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<beam.version>2.18.0</beam.version>
<maven-compiler-plugin.version>3.7.0</maven-compiler-plugin.version>
<maven-exec-plugin.version>1.6.0</maven-exec-plugin.version>
<maven-jar-plugin.version>3.1.2</maven-jar-plugin.version>
<slf4j.version>1.7.25</slf4j.version>
...
</properties>
<repositories>
...
</repositories>
<dependencyManagement>
...
</dependencyManagement>
<build>
<plugins>
...
</plugins>
<pluginManagement>
...
</pluginManagement>
</build>
<dependencies>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-storage</artifactId>
<version>1.101.0</version>
</dependency>
<dependency>
<groupId>org.apache.beam</groupId>
<artifactId>beam-runners-direct-java</artifactId>
<version>${beam.version}</version>
</dependency>
<dependency>
<groupId>com.google.api</groupId>
<artifactId>gax-grpc</artifactId>
<version>1.49.0</version>
</dependency>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-kms</artifactId>
<version>1.34.0</version>
<exclusions>
<exclusion>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-core-grpc</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-datastore</artifactId>
<version>1.102.3</version>
</dependency>
<dependency>
<groupId>org.apache.beam</groupId>
<artifactId>beam-sdks-java-core</artifactId>
<version>${beam.version}</version>
</dependency>
<dependency>
<groupId>org.apache.beam</groupId>
<artifactId>beam-sdks-java-io-google-cloud-platform</artifactId>
<version>${beam.version}</version>
<exclusions>
<exclusion>
<artifactId>junit</artifactId>
<groupId>junit</groupId>
</exclusion>
<exclusion>
<groupId>com.google.api</groupId>
<artifactId>gax-grpc</artifactId>
</exclusion>
<exclusion>
<groupId>io.grpc</groupId>
<artifactId>grpc-core</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.beam</groupId>
<artifactId>beam-sdks-java-extensions-google-cloud-platform-core</artifactId>
<version>${beam.version}</version>
<exclusions>
<exclusion>
<groupId>com.google.api</groupId>
<artifactId>gax-grpc</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.beam</groupId>
<artifactId>beam-sdks-java-io-jdbc</artifactId>
<version>${beam.version}</version>
</dependency>
<dependency>
<groupId>org.apache.beam</groupId>
<artifactId>beam-runners-google-cloud-dataflow-java</artifactId>
<version>${beam.version}</version>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20190722</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-jdk14</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>com.google.auto.value</groupId>
<artifactId>auto-value</artifactId>
<version>${autovalue.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.google.auto.value</groupId>
<artifactId>auto-value-annotations</artifactId>
<version>${autovalue.annotations.version}</version>
</dependency>
<dependency>
<groupId>com.google.cloud.sql</groupId>
<artifactId>postgres-socket-factory</artifactId>
<version>1.0.13</version>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.2.12</version>
</dependency>
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>org.apache.avro</groupId>
<artifactId>avro</artifactId>
<version>1.9.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.opencensus</groupId>
<artifactId>opencensus-api</artifactId>
<version>0.25.0</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-all</artifactId>
<version>1.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.55</version>
</dependency>
</dependencies>
如果我排除以下内容:
<dependency>
<groupId>com.google.api</groupId>
<artifactId>gax-grpc</artifactId>
<version>1.49.0</version>
<exclusions>
<exclusion>
<groupId>io.grpc</groupId>
<artifactId>grpc-api</artifactId>
</exclusion>
</exclusions>
</dependency>关于依赖项的错误消失了,但是,如果我这样做了,我就不能完成项目的编译,因为我得到了以下错误:
Caused by: java.lang.NoSuchMethodError: com.google.common.cache.CacheBuilder.expireAfterWrite(Ljava/time/Duration;)Lcom/google/common/cache/CacheBuilder;发布于 2020-05-08 05:26:25
所以看消息,你有这三组似乎相互冲突的依赖关系:
com.google.api:gax-grpc:jar:1.56.0 -> (...) -> io.grpc:grpc-api:jar:1.28.1com.google.cloud:google-cloud-kms:jar:1.38.1 -> io.grpc:grpc-api:jar:1.28.1
com.google.cloud:google-cloud-datastore:jar:1.102.4 -> io.grpc:grpc-api:jar:1.28.1org.apache.beam:beam-sdks-java-io-google-cloud-platform:jar:2.20.0 -> (...) -> io.grpc:grpc-api:jar:1.25.0
org.apache.beam:beam-sdks-java-io-google-cloud-platform:jar:2.20.0 -> (...) -> io.grpc:grpc-api:jar:1.26.0因此,您似乎需要匹配这三个组(gax-grpc、google-cloud-kms、google-cloud-datastore)。
您可以使用dependencyManagement强制grpc-api和grpc-core版本围绕单个版本(1.26.0或1.28.1)...
https://stackoverflow.com/questions/61527881
复制相似问题