(我还为此提出了一个GitHub问题-https://github.com/googleapis/google-cloud-java/issues/4095)
我有以下两个Apache Beam依赖项的最新版本:
依赖1-谷歌-云-数据流-java-sdk-all
(Apache Beam的发行版,旨在简化Apache Beam在谷歌云数据流服务上的使用-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-谷歌云数据流java
(我猜这允许在Google Cloud数据流中实际运行Beam管道)
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安装可以很好地处理这两个依赖项。我需要添加以下(第三)依赖项,以便在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安装后,我会遇到以下冲突:
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
如果我删除apachebeam依赖项并保留
googlecloud-pubsub
依赖项,我不会遇到任何Maven安装冲突。
有一个单独的谷歌“BOM”(物料清单)依赖管理器,应该管理谷歌云依赖的子依赖,但这并不能解决我的冲突:
<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.云:谷歌云pubsub:jar:1.53.0
有一个子依赖项:
io。grpc:grpc核心:jar:1.16.1
com.google.cloud.dataflow: google-lowd-dataflow-java-sdk-all: jar: 2.5.0
对以下各种版本具有子依赖关系:
io。grpc:grpc核心:jar
(GRPC是一个高性能、开源的通用RPC框架)
如果我添加
io.grpc: grpc-core: jar: 1.6.1
作为POM文件的显式依赖项,它不会将依赖项固定为子依赖项,因为它仍然被com.google.cloud.dataflow:谷歌云数据流javasdk-all: jar: 2.5.0
.
在接下来的GitHub问题上,garrettjonesgoogle于2月21日确认google云bom没有为io锁定版本。grpc:grpc核心:
https://github.com/googleapis/google-cloud-java/issues/2890
apachebeam依赖项似乎管理着不同版本的
io。grpc:grpc core:jar
内部,但是这与Google发布/订阅依赖项使用的(一致的)版本冲突。
我能做些什么来解决这个问题吗?我可以用Maven隔离子依赖吗?
这并不是一个真正的解决方案,但我确实发现问题主要在于这种依赖性:
<dependency>
<groupId>com.google.cloud.dataflow</groupId>
<artifactId>google-cloud-dataflow-java-sdk-all</artifactId>
<version>2.5.0</version>
</dependency>
此工件对io有许多不一致的依赖关系。grpc:grpc core:jar
以及apachebeam和googlepub子工件之间的隔离并没有真正正常工作。无论使用的是什么版本的googlecloudpubsub
,它都依赖于io。grpc:grpc core:jar
将与io的一个版本冲突。grpc:grpc核心:jar
。
我对Google工件提出了以下Git问题:
https://github.com/googleapis/google-cloud-java/issues/4095
我针对Apache Beam工件提出了以下问题(它指向了我提出的Google问题):
https://issues.apache.org/jira/browse/BEAM-6118
我通过解决这个问题来解决这个问题。我可以对我需要的数据进行民意调查,而不是通过订阅pub/sub来使用这些数据,但这并不是最优的,而且会导致谷歌云的成本大幅增加。
我能够解决这个问题购买只是排除grpc-core从谷歌云pubsub神器。它被合并到依赖树之后与相同的版本1.13.1作为束流-runners-google云-dataflow-java的依赖
这是pom的例外。对我有用的xml。
<dependencies>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-pubsub</artifactId>
<version>1.53.0</version>
<exclusions>
<exclusion>
<groupId>io.grpc</groupId>
<artifactId>grpc-core</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.beam</groupId>
<artifactId>beam-runners-google-cloud-dataflow-java</artifactId>
<version>2.8.0</version>
</dependency>
</dependencies>
由一些模块组成的maven项目。我的一个模块正在使用google版本的guava依赖项。现在,我正在我的项目中集成另一个模块,该模块也使用guava但版本。 因此,我希望新模块使用guava版本,而其余项目使用guava版本。我尝试将guava的添加到新模块中,但没有成功。 更新:@Guillaume Darmont的答案为不同的模块解决了问题。但现在我的问题是,新模块有两个依赖项,其中一个使用g
我有一个简单的java应用程序-maven项目在我的Netbean IDE。 在我创建Maven Web Application并添加第一个项目作为依赖项之后,Netbean显示一切都很好,我也可以使用所有方法。 但在运行时,我会 在不创建多模块JavaEE应用程序的情况下,是否有可能使web项目依赖于简单的java应用程序?
我有一个具有以下依赖项的GWT项目 > Gin 2.1.2依赖于guice 3.0,而owlapi 4.0.2依赖于guice 4.0-beta。 gin在客户端使用,而owlapi在服务器端使用。 我有什么办法才能让这件事成功?我是否可以在保留正常运行的GWT devmode的同时使用依赖关系范围?
问题内容: 我有以下代码: 这正常工作。但是,我还需要在pom.xml中添加Xalan作为依赖项,当我这样做时,上面的代码现在会引发错误: 我认为这与Xalan的jar中有一个不同的Transformer实现有关。在不更改上述代码并将Xalan保留为依赖关系的情况下,如何解决此冲突? 问题答案: 从Xalan中排除Xerces可以解决此问题:
问题内容: 假设我有四个项目: 项目A(依赖于B和D) 项目B(依赖于D) 项目C(依赖于D) 项目D 在这种情况下,如果我运行项目A,则Maven将正确地解决对D的依赖关系。如果我理解正确,则Maven始终以最短的路径获取依赖关系。由于D是A的直接依赖项,因此将使用B内指定的D而不是D。 但是现在假设这种结构: 项目A(依赖于B和C) 项目B(依赖于D) 项目C(依赖于D) 项目D 在这种情况下
我今天心情不好,想找出这个错误发生在我身上的原因。 当我运行它使服务器停止,当我尝试重新启动服务器时,它会输出一个错误。请记住,在端口上运行,在端口上运行。这是app没有试图以任何方式与MySQL对话或连接,因此它们不应该相互交互。 平台:数字海洋,操作系统:Ubuntu 16.04,节点版本:8.2.1,MySQL版本:5.7 --定义者:systemd--支持:input_userauth_r