0

我试图了解 bazel jvm external 的一些内部结构。bazel文档不够清晰,我无法理解。

以下步骤有什么区别。

Step 1
maven_install(
  # artifacts, repositories, ...
  maven_install_json = "//:maven_install.json",
)

此步骤在内部调用 coursier.bzl 以获取对 @bazel_tools//tools/build_defs/repo:http.bzl 的依赖项

Step 2

    load("@maven//:defs.bzl", "pinned_maven_install")
    pinned_maven_install()

此步骤似乎在调用 @bazel_tools//tools/build_defs/repo:http.bzl 而无需通过 coursier.bzl

问题 第 1 步和第 2 步之间有什么区别,两者似乎都是通过 HTTP 获取工件?例如:步骤 1 是否仅获取未固定版本,步骤 2 仅获取固定版本?

4

1 回答 1

1

您可以参考以下代码文档def.bzl

提供maven_install_json属性指令maven_install规则来构造两个存储库 - 一个用于未固定的工件(第一次调用),一个用于固定的工件(第二次调用)。

稍后,在第二步中,从固定工件存储库加载固定工件。您可以在此处看到正在生成的规则。

于 2021-08-11T20:29:05.760 回答