You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Bazel构建时Maven依赖Jar为空的问题求助

解决Bazel中maven_jar下载selenium-java Jar为空的问题

我之前踩过一模一样的坑!你遇到的问题根源在于**org.seleniumhq.selenium:selenium-java:3.11.0是一个聚合类型的Artifact(pom packaging)**,它本身就只包含清单文件,真正的代码和依赖逻辑都拆分在它的子模块Jar里,所以直接用原生maven_jar拉取它自然会得到空Jar。

下面给你两个亲测有效的解决方案:

方案1:直接依赖具体的子模块Jar

既然selenium-java是聚合包,你可以根据自己的需求直接引入它的子模块,比如需要Chrome驱动就拉selenium-chrome-driver,需要核心API就拉selenium-api。修改你的WORKSPACE配置如下:

maven_server( name = "default", url = "http://central.maven.org/maven2/" )

# 核心API模块
maven_jar(
    name = "org_seleniumhq_selenium_selenium_api",
    artifact = "org.seleniumhq.selenium:selenium-api:3.11.0",
    sha1 = "a1b2c3d4e5f6...", # 替换为该Jar对应的SHA1值
)

# Chrome驱动模块(示例,按需添加)
maven_jar(
    name = "org_seleniumhq_selenium_selenium_chrome_driver",
    artifact = "org.seleniumhq.selenium:selenium-chrome-driver:3.11.0",
    sha1 = "xYzAbcDef...", # 替换为该Jar对应的SHA1值
)

# 其他需要的子模块,比如selenium-support、selenium-firefox-driver等

之后在BUILD文件里直接依赖这些子模块即可。

方案2:使用rules_jvm_external替代原生maven_jar

原生maven_jar对聚合包、依赖树的支持很有限,而rules_jvm_external是Bazel官方推荐的JVM依赖管理工具,能自动解析pom文件的依赖关系,帮你拉取所有需要的Jar包。

步骤1:在WORKSPACE中引入rules_jvm_external

load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

http_archive(
    name = "rules_jvm_external",
    sha256 = "d6474445c97f0f077f5d360b874576901d3f49d13cc4d69b1d9499b9d90d856b", # 对应4.4版本的sha256,可按需更新
    url = "https://github.com/bazelbuild/rules_jvm_external/releases/download/4.4/rules_jvm_external-4.4.tar.gz",
)

load("@rules_jvm_external//:defs.bzl", "maven_install")

maven_install(
    artifacts = [
        "org.seleniumhq.selenium:selenium-java:3.11.0",
    ],
    repositories = [
        "http://central.maven.org/maven2/",
    ],
)

步骤2:在BUILD文件中引用依赖

java_binary(
    name = "your_application",
    srcs = glob(["src/main/java/**/*.java"]),
    deps = [
        "@maven//:org_seleniumhq_selenium_selenium_java",
    ],
)

这样rules_jvm_external会自动解析selenium-java的pom依赖,拉取所有子模块和传递依赖的Jar包,不用你手动一个个添加。

验证方式

你可以去Maven中央仓库查看selenium-java:3.11.0的详情,它的packaging类型明确是pom,页面下方的Modules列表里就是真正包含代码的子模块Jar,这也能解释为什么你下载的Jar只有清单文件。

内容的提问来源于stack exchange,提问作者d.t.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:08:09