bazel告诉外部依赖Maven使用本地jar

时间:2019-07-08 23:12:20

标签: bazel

GAPID使用bazel,并且具有使用maven的外部依赖项。我收到此错误:

ERROR: C:/users/pemgithub/_bazel_pemgithub/3mdmxsrc/external/gapic_third_party/BUILD.bazel:19:1: no such package '@io_grpc_context//jar': Failed to fetch Maven dependency: Could not transfer artifact io.grpc:grpc-context:jar:1.16.1 from/to io_grpc_context (https://repo1.maven.org/maven2/): connect timed out and referenced by '@gapic_third_party//:grpc'
ERROR: Analysis of target '//:pkg' failed; build aborted: no such package '@io_grpc_context//jar': Failed to fetch Maven dependency: Could not transfer artifact io.grpc:grpc-context:jar:1.16.1 from/to io_grpc_context (https://repo1.maven.org/maven2/): connect timed out
INFO: Elapsed time: 11.014s
INFO: 0 processes.
FAILED: Build did NOT complete successfully (0 packages loaded, 0 targets configured)
    Fetching @com_github_pkg_errors; Restarting. 10s

我认为这与代理(企业网络)有关。我尝试将代理设置添加到C:/users/pemgithub/.m2/settings.html。但是,bazel maven似乎并未使用代理设置。

因此,我宁愿手动下载jar文件,并告诉bazel maven使用本地jar文件。我该怎么做?

2 个答案:

答案 0 :(得分:0)

请不要使用maven_jar规则。不推荐使用它,而推荐使用Maven解析器规则集rules_jvm_external

rules_jvm_external中,您可以通过HTTP_PROXY / HTTPS_PROXY环境变量(documentation)使用代理,并设置具有身份验证凭证的自定义存储库URL({{ 3}})。

答案 1 :(得分:0)

Bazel当前(2019年7月)不正确地支持此功能。尽管推荐使用rules_jvm_external作为maven_jar的后继产品,但它不会读取Maven的~/.m2/settings.xml,也不支持使用已经从~/.m2/repository下载的工件。

一种解决方法是使用您自己的小反向代理,该代理从~/.m2/repository读取并告诉Bazel从localhost下载。我为此创建了bazel-maven-proxy。请注意,它尚不支持代理服务器,而是支持内部Maven Central镜像,但做出贡献应该微不足道。