拓冰建站拓冰建站
首页 / 资讯中心 / 正文

如何调整模块依赖后用 graphUpdate 任务更新 nowinandroid 的模块依赖图?

如何调整模块依赖后用 graphUpdate 任务更新 nowinandroid 的模块依赖图【免费下载链接】nowinandroidA fully functional Android app built entirely with Kotlin and Jetpack Compose项目地址: https://gitcode.com/GitHub_Trending/no/nowinandroid在 nowinandroidNow in Android仓库中每个模块都有自己的README.md其中包含该模块的 Mermaid 依赖图。当你调整了某个模块的 Gradle 依赖后这张图就与代码不同步了。仓库提供了graphUpdate这个 Gradle 任务用于把最新的依赖关系重新写入各模块README.md中的依赖图区块。本文说明如何在本地手动执行这个任务并验证更新结果。graphUpdate 任务如何工作依赖图并不是手写维护的而是由构建逻辑生成的。任务的注册与实现位于 Graph.kt整体分两步graphDump任务递归收集模块间的 ProjectDependency把结果转成 Mermaid 文本写到该模块的build/mermaid/graph.txt图本体和build/mermaid/legend.txt图例。graphUpdate任务读取上一步的输出用正则匹配各模块README.md中的!--region graph-- ... !--endregion--区块把区块内容整体替换为新的 Mermaid 图如果模块还没有README.md会按模板新建一个模板里包含#模块路径、## Module dependency graph标题和空的!--region graph--区块。图里的线型按依赖配置区分api配置用实线--implementation用虚线-.-其他配置如baselineProfile、testedApks会带标签的虚线。docs/ModularizationLearningJourney.md 也说明了这一点When modules dependencies change, module graphs are automatically updated by the Build.yaml workflow. You can also manually update the graphs by running thegraphUpdatetask.另外这些任务是在根项目的 RootPlugin.kt 中为所有子项目注册的且仅在没有启用 isolated projects 时生效没有 build 文件的模块会被跳过。准备工作已获取 nowinandroid 仓库代码并且当前工作区没有未处理的其他改动避免后续git diff时混淆来源。已调整好模块依赖例如修改了某个build.gradle.kts中的api/implementation声明。CI 侧使用的构建环境是 JDK 21Zulu 21见 Build.yaml 中的Set up JDK 21步骤本地执行./gradlew时使用项目自带的 Gradle Wrapper 即可。执行 graphUpdate在仓库根目录运行./gradlew graphUpdate该任务会对所有子项目执行graphDump生成 Mermaid 文本graphUpdate把文本写回对应模块的README.md。任务的副作用就是修改工作区中的**/README.md文件——这正是任务的设计用途不需要额外参数。如果你只想预览某模块生成的 Mermaid 内容而不改文件可以直接运行graphDump任务会输出生成的graph.txt路径到日志logger.lifecycle打印build/mermaid/graph.txt的 URI。验证更新结果检查 README.md 的变更graphUpdate只替换!--region graph--与!--endregion--之间的内容区块外的文字不受影响。用 git 查看被改动的文件git status -- **/README.md git diff -- **/README.md以:app模块 为例更新后的区块形如节选对照你修改的依赖声明确认新增的线如:app -.- :some:module已出现在图中。用 CI 同款命令判断图是否已同步Build.yaml 工作流中的 Check Graphs 步骤用下面的方式验证先运行./gradlew graphUpdate再执行git add -- **/README.md git diff --cached --quiet --exit-code -- **/README.md如果在本地已经跑过graphUpdate再次执行该命令时git diff --cached --quiet不会有输出且以 0 退出说明依赖图与代码一致。CI 中该检查失败时fork 提交的 PR 会收到错误信息Check Graphs failed, please update graphs with: ./gradlew graphUpdate也就是说CI 无法替 fork 自动更新图需要你在本地运行./gradlew graphUpdate后把README.md的改动提交进去。可选定制图的范围Graph.kt 支持两个 Gradle 属性来影响图的生成# 逗号分隔的模块路径列表这些模块会从图中排除 graph.ignoredProjects:some:module,:other # 逗号分隔的配置名只有这些配置中的依赖会画进图里 graph.supportedConfigurationsapi,implementation,baselineProfile,testedApksgraph.supportedConfigurations未设置时的默认值就是api,implementation,baselineProfile,testedApksgraph.ignoredProjects默认不排除任何模块。属性可以在gradle.properties或命令行-Pgraph.ignoredProjects...中提供改完后再运行./gradlew graphUpdate即可看到变化。限制与注意点graphUpdate的产物是每个模块README.md里的图区块区块标记!--region graph--/!--endregion--被手工删除或改名后任务无法定位替换位置需要恢复这两个标记。graphDump在 Gradle 配置阶段就会递归收集依赖关系实现注释也提到该收集是递归执行、不复用中间值的但注释说明对每个项目一般耗时不到 1 ms。在 CI 中Update Graphs 步骤带continue-on-error: true真正的失败判据是后续 Check Graphs 的 git diff 检查仓库自身 PR 的图更新会由工作流自动提交commit message 为 Updates graphsfork 的 PR 则必须自行提交图更新。确认git diff --cached --quiet检查通过、README.md中的图与修改后的依赖声明一致后就可以把**/README.md的改动随功能改动一起提交了。【免费下载链接】nowinandroidA fully functional Android app built entirely with Kotlin and Jetpack Compose项目地址: https://gitcode.com/GitHub_Trending/no/nowinandroid创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门