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

Sbt中如何为common子项目指定util兄弟项目依赖以实现独立编译

配置sbt子项目依赖并实现独立编译

嘿,我来帮你搞定这个问题!要让common子项目依赖兄弟项目util并能独立编译,分几步就能轻松实现,咱们一步步来:

1. 先在根项目中统一声明所有子项目

首先你的项目结构建议调整成这样(如果不是的话,照着改更便于sbt识别):

your-main-project/
├── build.sbt       # 根项目配置文件
├── util/           # util子项目目录
│   └── src/
└── common/         # common子项目目录
    └── src/

在根目录的build.sbt里,用sbt的项目定义语法把util和common都声明为子项目,这样sbt才能识别它们之间的兄弟关系:

lazy val root = (project in file("."))
  .aggregate(util, common)  // 聚合子项目,方便根项目一次性编译所有模块
  .settings(
    // 这里放所有子项目共享的配置,比如Scala版本
    scalaVersion := "2.13.12",
    name := "your-main-project"
  )

// 声明util子项目
lazy val util = project in file("util")

// 声明common子项目
lazy val common = project in file("common")

2. 在common的build.sbt中添加对util的依赖

进入common子项目目录,创建或修改它的build.sbt,用sbt的dependsOn方法直接引用兄弟项目util:

// 推荐和根项目保持一致的Scala版本,也可以继承根项目配置
scalaVersion := "2.13.12"

// 核心配置:让common项目依赖util子项目
lazy val common = (project in file("."))
  .dependsOn(util)

这样配置后,common就能自动识别并使用util里的所有代码了。

3. 独立编译common项目的两种方式

现在你可以用两种方式单独编译common:

  • 在根项目目录下运行命令:sbt common/compile,这条指令会只编译common及其依赖的util模块
  • 直接进入common子项目目录,运行sbt compile,sbt会自动关联根项目的配置和依赖关系,同样能正常完成编译

额外小提示

  • 确保util项目本身能正常编译,否则common编译时会因为依赖缺失报错
  • 如果想让common的测试代码使用util的测试代码,可以把依赖写成.dependsOn(util % "test->test")
  • 子项目各自的第三方库依赖,依然可以在各自的build.sbt里用libraryDependencies添加,和子项目依赖互不冲突

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:28:57