【发布时间】:2020-10-23 05:54:56
【问题描述】:
我有一个包含 2 个子项目的 SBT 项目,我希望所有子项目的测试编译器设置与正常编译器设置不同。 IE。我想对主要代码强制执行-Xfatal-warnings,但对测试不强制。
我正在寻找一种不涉及单独设置每个子项目而是一次性设置的解决方案。
我正在使用 SBT 1.3.9 和 Scala 2.13.3
这是我在 SBT 中的一个示例:
lazy val root: Project = project
.in(file("."))
.aggregate(projectA, projectB)
lazy val projectA: Project = project
.in(file("projectA"))
.settings(
name := "projectA",
)
lazy val projectB: Project = project
.in(file("projectA"))
.settings(
name := "projectA",
)
我尝试了很多选项,但我无法设置与编译选项不同的测试选项。 作为一个简短的总结,我尝试使用范围界定:
-
scalacOptions := Seq(XXX)+Test/scalacOptions := Seq(YYY) -
Compile/scalacOptions := Seq(XXX)+Test/scalacOptions := Seq(YYY) -
ThisBuild/scalacOptions := Seq(XXX)+ThisBuild/Test/scalacOptions := Seq(YYY) -
ThisBuild/Compile/scalacOptions := Seq(XXX)+ThisBuild/Test/scalacOptions := Seq(YYY) - 还尝试在
test下进行范围,并尝试了上述各种组合。
This question 最接近我的需要,但它不起作用,可能是因为它不适用于多项目文件。
更新:
我刚刚发现,如果我将设置范围限定为特定项目,那么我就有了我想要的行为:
projectA / Compile / scalacOptions := Seq(XXX)
projectA / Test / scalacOptions := Seq(YYY)
projectB / Compile / scalacOptions := Seq(XXX)
projectB / Test / scalacOptions := Seq(YYY)
但是如果我使用ThisBuild 它就不起作用
ThisBuild / Compile / scalacOptions := Seq(XXX)
ThisBuild / Test / scalacOptions := Seq(XXX)
我对某事有错误的理解还是这是一个错误?
【问题讨论】: