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文件。我该怎么做?
答案 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镜像,但做出贡献应该微不足道。