在Bazel WORKSPACE文件中,如果要使用 Rules JVMExternal,则需要在WORKSPACE文件中指定其版本。这就需要用到RULES_JVM_EXTERNAL_TAG和RULES_JVM_EXTERNAL_SHA。
RULES_JVM_EXTERNAL_TAG是指定要使用的Rules JVMExternal版本所在的Git标签名称。RULES_JVM_EXTERNAL_SHA是指定要使用的Rules JVMExternal版本所在的Git哈希值。这两个值通常配对使用。
示例代码:
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive( name = "io_bazel_rules_jvm_external", sha256 = "a7d2d534844dea8901dc96d3a6108cbd6f930c60c9656e902eed80d0f493ccea", url = "https://github.com/bazelbuild/rules_jvm_external/archive/3.0.zip", )
workspace(name = "my_project")
load("@io_bazel_rules_jvm_external//:defs.bzl", "jvm_external_rules_dependencies", "maven_install")
jvm_external_rules_dependencies()
maven_install( artifacts = [ "commons-io:commons-io:2.4", ], repository = "https://repo.maven.apache.org/maven2", # ... )
这里的sha值指的就是RULES_JVM_EXTERNAL_SHA的值。而“@io_bazel_rules_jvm_external//:defs.bzl”中的//:表示使用的TAG版本(即:RULES_JVM_EXTERNAL_TAG)尚未确认,这时需要用户在WORKSPACE文件中将//:替换为对应的标签名称。