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

如何配置SBT的publishLocal仅本地发布变更的子模块?

仅发布变更子项目的publishLocal配置方法

sbt 默认支持增量构建,publishLocal 本身会自动跳过未变更的子项目,你也可以通过更明确的方式精准控制:

  • 直接使用内置命令组合
    运行以下命令,即可只发布自上次构建以来有文件修改、依赖变更的子项目:

    sbt "changed publishLocal"
    

    changed 任务会自动检测所有变更项,仅对这些子项目执行 publishLocal。

  • 自定义任务(可选,更灵活)
    如果需要频繁使用该功能,可在 build.sbt 中添加自定义任务:

    lazy val publishLocalChanged = taskKey[Unit]("仅发布变更的子项目到本地仓库")
    publishLocalChanged := {
      val changedProjects = (changed in ThisBuild).value
      changedProjects.foreach { proj =>
        (publishLocal in proj).value
      }
    }
    

    之后只需运行:

    sbt publishLocalChanged
    

注意事项

  • 变更检测基于源文件修改时间、内容哈希,以及项目依赖链的变更。如果子项目A依赖子项目B,当B变更时,A也会被触发发布(因为A的构建依赖B的输出)。
  • 如果子项目依赖外部生成的资源文件,需要确保这些文件被加入sbt的监控范围,可通过配置watchSources实现,避免漏发布变更内容。

内容的提问来源于stack exchange,提问作者MawrCoffeePls

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 21:15:58