在Bazel构建的Java项目中添加Google Tink库遇包名无效问题求助
解决Bazel项目中添加Google Tink Java库的问题
你遇到的问题是因为直接使用仓库名@com_github_google_tink作为依赖是无效的,Bazel需要指定具体的目标标签。以下是完整的解决方案:
步骤1:配置WORKSPACE文件
在项目根目录的WORKSPACE文件中添加以下内容,引入Tink仓库及其依赖(示例使用v1.12.0版本,可根据需求替换为对应版本):
http_archive( name = "com_github_google_tink", url = "https://github.com/google/tink/archive/refs/tags/v1.12.0.tar.gz", sha256 = "f9c158024f0ad530642900d19c3e0e9555f0d1a7a837a7f1c8b531e04a729d6d", strip_prefix = "tink-1.12.0", ) # 引入Tink依赖的Java规则 http_archive( name = "rules_java", url = "https://github.com/bazelbuild/rules_java/releases/download/7.6.0/rules_java-7.6.0.tar.gz", sha256 = "5a78a7ae82cd1a33cef56dc578c7d2aed85c134065f4d430b340f675e60c37a9", ) load("@rules_java//java:repositories.bzl", "rules_java_dependencies", "rules_java_toolchains") rules_java_dependencies() rules_java_toolchains()
步骤2:修改BUILD文件的依赖配置
将你的java_library规则中的依赖替换为具体的Tink Java目标,比如核心库:
java_library( name = "testlib", srcs = glob(["*.java"]), deps = [ "@com_github_google_tink//tink-java:tink", # 若仅需核心功能,可替换为:@com_github_google_tink//tink-java/core:tink-core # 其他模块如AEAD加密可写:@com_github_google_tink//tink-java/aead:tink-aead ], visibility = ["//visibility:public"], )
关键说明
- Bazel依赖必须指向仓库内具体的构建目标,而非整个仓库本身,所以不能直接用
@com_github_google_tink。 - 可根据项目需求选择对应Tink模块,所有Java模块都在
tink-java目录下,目标命名规则为tink-<模块名>。
内容的提问来源于stack exchange,提问作者Udit Gupta
相关产品推荐
相关产品推荐

