尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

如何在 Selenium 项目中更新 Java 与 JS 依赖并刷新锁文件(Maven repin 与 pnpm workspace)

如何在 Selenium 项目中更新 Java 与 JS 依赖并刷新锁文件(Maven repin 与 pnpm workspace) 如何在 Selenium 项目中更新 Java 与 JS 依赖并刷新锁文件Maven repin 与 pnpm workspace【免费下载链接】seleniumA browser automation framework and ecosystem.项目地址: https://gitcode.com/GitHub_Trending/se/seleniumSelenium 是一个用 Bazel 构建的 monorepoJava 依赖集中在MODULE.bazel的 Maven 扩展中JS 依赖则按 pnpm-workspace.yaml 定义的 workspace 分散在各package.json里。当你在项目里升级某个 Maven 坐标或给 JS 绑定加新依赖时光改声明文件不够——必须刷新对应的锁文件Java 是 java/maven_install.jsonJS 是根目录的pnpm-lock.yaml否则构建图与声明不一致。本文基于 CONTRIBUTING.md 和 Rakefile、rake_tasks/java.rake、rake_tasks/node.rake 说明这两条刷新锁文件的操作路径。前提已克隆仓库并在根目录工作。项目使用 Bazelisk 与 hermetic Bazel 工具集不需要额外配置语言级本地开发环境Rake 任务通过仓库自带的goWindows 下go.bat包装器执行。更新 Java 依赖改 MODULE.bazel 再 repinJava 侧的入口是 MODULE.bazel 中以maven.install声明、名字为maven的代码块其中artifacts列出了全部 Maven 坐标boms列出生效的 BOMmaven.install( name maven, artifacts [ com.google.code.gson:gson:2.14.0, ... ], boms [ io.netty:netty-bom:4.2.17.Final, ... ], lock_file //java:maven_install.json, ... )操作流程编辑 MODULE.bazel在maven.install中按常规 Maven 坐标group:artifact:version更新或新增你要的依赖。运行 repin 命令刷新锁文件REPIN1 bazel run maven//:pin该命令会重新解析依赖并写入锁文件java/maven_install.json由上面lock_file //java:maven_install.json指定。MODULE.bazel中同时设置了fail_if_repin_required True和fail_on_missing_checksum True也就是说锁文件与声明不一致或校验和缺失时Bazel 侧不会静默通过——改完MODULE.bazel后执行 repin 是必做步骤而不是可选项。除了上面的环境变量写法仓库的 rake 封装也提供了等价入口见 rake_tasks/java.rake./go java:pin它实际执行bazel run --repo_envRULES_JVM_EXTERNAL_REPIN1 maven//:pin。更新 JS 依赖pnpm workspace 流程JS 开发使用pnpm并且是 pnpm workspaces 结构。workspace 列表在 pnpm-workspace.yaml 中当前包含四个每个 workspace 有自己独立的package.jsonjavascript/atomsjavascript/grid-uijavascript/privatejavascript/selenium-webdriver给单个 workspace 加依赖以 JS webdriver 绑定为例CONTRIBUTING 中的示例命令把my-amazing-dep换成你要安装的实际包名cd javascript/selenium-webdriver bazel run javascript:pnpm -- install my-amazing-dep --dir $PWD这里特意走bazel run而不是本机pnpm是为了用项目构建所用的同一版本 pnpm 来执行安装保证锁文件与 CI 行为一致。CONTRIBUTING 也说明可以用本地安装的pnpm操作但上条 Bazel 路径是文档给出的默认方式。更新整棵树到最新版本要把依赖树内的依赖全部更新到最新版bazel run javascript:pnpm -- -r up --dir $PWD该命令会同时更新锁文件。执行后pnpm-lock.yaml及受影响 workspace 的package.json都会出现变更需要把全部变更文件一起提交。可选路径用./go包装器自动化如果你不想手动编辑MODULE.bazel仓库提供了自动化 rake 任务注意它们是按语言命名空间筛选的只处理对应语言不会牵连其他绑定Java 自动升级rake_tasks/java.rake 的:update任务./go java:update它的行为是先执行一次java:pin确保初始状态正常再运行bazel run maven//:outdated拿到过期的artifact [当前版本 - 最新版本]列表用扫描到的新版本改写MODULE.bazel最后再执行一次java:pin刷新锁文件。该脚本内置两个例外处理graphql相关的日期型不稳定版本号、以及net.bytebuddy的-jdkN变体会回退到 Maven metadata 中的稳定版本。JS 自动升级rake_tasks/node.rake 的:update任务./go node:update # 在已声明的版本范围内更新 ./go node:update latest # 附加 --latest更新到范围外最新版本执行bazel run pnpm//:pnpm -- update -r --dir 仓库根后自动接着执行node:pin即pnpm install --lockfile-only只刷新锁文件不实际安装。单独刷新 JS 锁文件也可以用./go node:pin需要说明的是Rakefile 顶层的./go update会依次执行all:update含 py、rb、node、dotnet 等全部语言绑定、rust:update和update_multitool远超「只更新 Java 与 JS」的范围只更新本场景目标时请使用上面两个命名空间任务。验证与提交两条路径的成功标志都是锁文件与声明文件同时出现变更JavaMODULE.bazel与java/maven_install.json变更JS对应 workspace 的package.json与pnpm-lock.yaml变更。用git status/git diff确认变更文件符合预期后按 CONTRIBUTING.md 的流程创建分支、提交全部变更文件并发起 PRJava 侧文档原文即「runREPIN1 bazel run maven//:pinto update the lock file, create a PR and check the change in」。提交前有两点文档给出的提醒AGENTS.md 把「Dependency updates /MODULE.bazel/ repin flows」列为高风险变更区合并前需要说明触碰了高风险区域及跨绑定的影响推送前运行./scripts/format.sh --pre-push避免 CI 的格式化检查失败若已配置 pre-commit/pre-push hook 则由 hook 处理。边界与限制依赖版本声明只存在于MODULE.bazel的maven.install块中不存在「改java/下某个文件即可升级依赖」的旁路third_party/中的打包依赖是例外区域其中的变更需要向上游项目提交而不是在 Selenium 仓库里改。Bazel 构建当前使用 pnpm v10由 aspect_rules_js 打包而pnpm-workspace.yaml同时兼容 v10 与 v11走bazel run路径可以确保与构建使用的版本一致。JS 侧-r up的「最新」是 pnpm 在既有依赖范围语义内的更新如需跨大版本./go node:update latest的--latest参数才是对应开关。完成 repin、确认两个锁文件随声明文件一并进入 PR依赖更新任务即告完成。【免费下载链接】seleniumA browser automation framework and ecosystem.项目地址: https://gitcode.com/GitHub_Trending/se/selenium创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表