sbt如何为所有Scala 3项目统一应用通用Test配置无需重复设置
方案1:直接用inThisBuild包裹Test配置(最简洁,完全符合你的需求)
你不需要给每条配置手动加ThisBuild / Test前缀,直接把整块Test配置用inThisBuild包裹即可,sbt会自动给内部所有配置附加ThisBuild作用域,所有项目会自动继承该配置,无需手动调用.settings(testSettings)。
完整代码示例:
import Dependencies._ ThisBuild / scalaVersion := "3.0.1" ThisBuild / scalacOptions ++= Seq( "-unchecked", // more ) // 全局Test配置,所有项目自动继承,无需额外前缀 inThisBuild( inConfig(Test)(Seq( testOptions += Tests.Argument(TestFrameworks.ScalaTest, "-o", "-e"), // 其他Test相关配置 )) ) lazy val root = (project in file(".")) .aggregate( `test-util` ) lazy val `test-util` = project
原理说明
sbt的作用域继承规则中,项目级未显式定义的配置,会自动回退到ThisBuild级的同作用域配置,上述写法等效于给所有Test配置隐式加上了ThisBuild / Test前缀,没有冗余代码,同时保持了配置的可读性。如果某个子项目需要自定义Test配置,只需在子项目的settings中显式声明对应配置,即可覆盖全局的默认配置,不影响灵活性。
内容的提问来源于stack exchange,提问作者Abhijit Sarkar
相关产品推荐
相关产品推荐

