使用ThisBuild的多项目Scala SBT测试的不同选项

ColOfAbRiX

我有一个包含2个子项目的SBT项目,并且我希望所有子项目的测试编译器设置都与常规编译器设置不同。即我想-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其合并,并尝试使用上述各种组合。

这个问题是最接近我需要的,但是它不起作用,可能是因为它不适用于多项目文件。

更新:

我刚刚发现,如果我将设置范围限定于特定项目,那么我就会有自己想要的行为:

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)

我对某事的理解有误还是这是一个错误?

马里奥·加里奇(Mario Galic)

ThisBuild尝试为多个子项目定义通用设置时,常常会误解作用域轴值。请注意,它意味着

将此通用设置添加到该版本中的所有子项目中

相反,意思更接近

如果子项目未定义此设置,则可能委托(回退)到 ThisBuild

例如,inspect Test / scalacOptions在基本的hello world项目上执行

...
[info] Provided by:
[info]  ProjectRef(uri("file:/my/Path/To/Project/"), "root") / Test / scalacOptions
...
[info] Delegates:
[info]  Test / scalacOptions
[info]  Runtime / scalacOptions
[info]  Compile / scalacOptions
[info]  scalacOptions
[info]  ThisBuild / Test / scalacOptions
[info]  ThisBuild / Runtime / scalacOptions
[info]  ThisBuild / Compile / scalacOptions
[info]  ThisBuild / scalacOptions
[info]  Zero / Test / scalacOptions
[info]  Zero / Runtime / scalacOptions
[info]  Zero / Compile / scalacOptions
[info]  Global / scalacOptions
...

Provided by节显示优先级最高的范围

ProjectRef(uri("file:/my/Path/To/Project/"), "root") / Test / scalacOptions

然后,该Delegates部分显示了优先顺序的其余部分,其中我们注意到在ThisBuild用作项目轴的作用域“上方”有一堆范围因此,由于sbt范围委派规则的工作方式

ThisBuild / Test / scalacOptions

这并不意味着子项目中的测试将自动选择新值,因为新值在选择顺序中非常低。

我认为,围绕sbt可能令人困惑的作用域规则的最直接方法是定义一个val具有通用设置的,然后将该值简单地添加到每个子项目中,或者定义一个自动插件

自动插件可以全面注入项目设置

考虑我的相关答案,该答案说明了两种方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用sbt进行多项目构建

来自分类Dev

使用Junit5进行Gradle多项目集成测试

来自分类Dev

如何使用使用它的项目在多项目构建中开发sbt插件?

来自分类Dev

在不同的java maven项目中使用sbt构建的scala项目的传递依赖

来自分类Dev

无法在SBT中使用ProjectRef在多项目构建中“项目gostats”?

来自分类Dev

如何在使用它的项目的多项目构建中开发sbt插件?

来自分类Dev

sbt多项目构建,项目之间具有测试依赖性?

来自分类Dev

项目特定的SBT JVM选项

来自分类Dev

使用“ sbt it:test”时,为什么不执行Play / Scala项目中的集成测试?

来自分类Dev

SBT / Scala和集成测试

来自分类Dev

使用SBT创建新的Scala项目?

来自分类Dev

使用SBT创建新的Scala项目?

来自分类Dev

使用不同的参数testng依次执行多项测试

来自分类Dev

如何在SBT(播放)多项目中使用共享配置?

来自分类Dev

sbt多项目未定义设置

来自分类Dev

sbt多项目未定义设置

来自分类Dev

如果我有一个SBT多项目构建,如何使A的测试依赖项不泄漏到B的测试中

来自分类Dev

使用SBT运行JUnit测试

来自分类Dev

Maven库在具有不同依赖关系的更多项目中使用

来自分类Dev

如何在Eclipse中导入使用sbt创建的scala项目?

来自分类Dev

使用SBT管理同时包含Scala和Python的项目

来自分类Dev

多项目sbt不会生成文件结构

来自分类Dev

播放2.3.7 SBT多项目编译器问题

来自分类Dev

为什么多项目build.sbt失败?

来自分类Dev

在SBT的多项目构建中,如何在另一个子项目中使用对象/类型?

来自分类Dev

在SBT的多项目构建中,如何在另一个子项目中使用对象/类型?

来自分类Dev

如何在Scala sbt项目的IntelliJ IDEA中对每个代码更改运行测试?

来自分类Dev

无法编译Scala / SBT项目

来自分类Dev

如何在 sbt 项目中使用来自不同位置的 Scala 源并使其与 IntelliJ IDEA 一起使用?

Related 相关文章

  1. 1

    使用sbt进行多项目构建

  2. 2

    使用Junit5进行Gradle多项目集成测试

  3. 3

    如何使用使用它的项目在多项目构建中开发sbt插件?

  4. 4

    在不同的java maven项目中使用sbt构建的scala项目的传递依赖

  5. 5

    无法在SBT中使用ProjectRef在多项目构建中“项目gostats”?

  6. 6

    如何在使用它的项目的多项目构建中开发sbt插件?

  7. 7

    sbt多项目构建,项目之间具有测试依赖性?

  8. 8

    项目特定的SBT JVM选项

  9. 9

    使用“ sbt it:test”时,为什么不执行Play / Scala项目中的集成测试?

  10. 10

    SBT / Scala和集成测试

  11. 11

    使用SBT创建新的Scala项目?

  12. 12

    使用SBT创建新的Scala项目?

  13. 13

    使用不同的参数testng依次执行多项测试

  14. 14

    如何在SBT(播放)多项目中使用共享配置?

  15. 15

    sbt多项目未定义设置

  16. 16

    sbt多项目未定义设置

  17. 17

    如果我有一个SBT多项目构建,如何使A的测试依赖项不泄漏到B的测试中

  18. 18

    使用SBT运行JUnit测试

  19. 19

    Maven库在具有不同依赖关系的更多项目中使用

  20. 20

    如何在Eclipse中导入使用sbt创建的scala项目?

  21. 21

    使用SBT管理同时包含Scala和Python的项目

  22. 22

    多项目sbt不会生成文件结构

  23. 23

    播放2.3.7 SBT多项目编译器问题

  24. 24

    为什么多项目build.sbt失败?

  25. 25

    在SBT的多项目构建中,如何在另一个子项目中使用对象/类型?

  26. 26

    在SBT的多项目构建中,如何在另一个子项目中使用对象/类型?

  27. 27

    如何在Scala sbt项目的IntelliJ IDEA中对每个代码更改运行测试?

  28. 28

    无法编译Scala / SBT项目

  29. 29

    如何在 sbt 项目中使用来自不同位置的 Scala 源并使其与 IntelliJ IDEA 一起使用?

热门标签

归档