如何解决 bazel 中工件的循环依赖?

How to resolve circular dependencies for artifacts in bazel?

我的应用程序依赖于以下工件

com.oracle.jdbc:ojdbc8

有循环依赖
com.oracle.jdbc:ucp

构建失败并出现以下错误

ERROR: /private/var/tmp/_bazel_me/4f1994ece960b360388a372b5e6aa4b2/external/maven/BUILD:2757:11: in jvm_import rule @maven//:com_oracle_jdbc_ojdbc8: cycle in dependency graph:
   //package/java:MyClass
.-> @maven//:com_oracle_jdbc_ojdbc8
|   @maven//:com_oracle_jdbc_ucp
`-- @maven//:com_oracle_jdbc_ojdbc8

有办法解决这个问题吗?

看这里神器:
https://mvnrepository.com/artifact/com.oracle.jdbc/ojdbc8

只有一个版本:
https://mvnrepository.com/artifact/com.oracle.jdbc/ojdbc8/12.2.0.1

它依赖于 com.oracle.jdbc:upc,它确实依赖于 com.oracle.jdbc:ojdbc8:12.2.0.1
https://mvnrepository.com/artifact/com.oracle.jdbc/ucp/12.2.0.1

这肯定是个错误,因为我不认为 maven 也允许循环依赖。

回头看https://mvnrepository.com/artifact/com.oracle.jdbc/ojdbc8,说是移到https://mvnrepository.com/artifact/com.oracle.database.jdbc/ojdbc8,那里的upc版本没有依赖关系: https://mvnrepository.com/artifact/com.oracle.database.jdbc/ucp/12.2.0.1

所以也许 com.oracle.database.jdbc:ojdbc8 适合您(或特定版本 com.oracle.database.jdbc:ojdbc8:12.2.0.1,因为之前的版本是 12.2.0.1,最新版本是 21.4.0.0.1)

有趣的是,com.oracle.database.jdbc:ojdbc8 说它也被移动了:https://mvnrepository.com/artifact/com.oracle.database.jdbc/ojdbc8