使用project.configs将.scala项目定义转换为build.sbt

使用project.configs将.scala项目定义转换为build.sbt,sbt,Sbt,我正在尝试将构建定义从Scala转换为build.sbt 在Scala的定义中,我有如下内容: lazy val ComponentTest = config("componenttest") extend Test val componentTests = inConfig(ComponentTest)(Defaults.testTasks) ++ Seq( testOptions in ComponentTest := Seq(Tests.Filter(componentTe

我正在尝试将构建定义从Scala转换为build.sbt

在Scala的定义中,我有如下内容:

  lazy val ComponentTest = config("componenttest") extend Test
  val componentTests = inConfig(ComponentTest)(Defaults.testTasks) ++ Seq(
    testOptions in ComponentTest := Seq(Tests.Filter(componentTestFilter))
  )

  val main = play.Project(appName, appVersion, appDependencies ++ testDependencies)
    .settings(...)
    .configs(ComponentTest)
    .settings(componentTests: _*)

  private def componentTestFilter(name: String): Boolean = name endsWith "CT"
我还没有找到如何将Project.configs(ComponentTest)迁移到build.sbt

我找到的唯一解决方案要复杂得多:

lazy val ComponentTest = config("componenttest") extend Test

inConfig(ComponentTest)(Defaults.testSettings)

javaSource in ComponentTest := (javaSource in Test).value

scalaSource in ComponentTest := (scalaSource in Test).value

configuration in ComponentTest := (configuration in Test).value

testOptions in ComponentTest := (testOptions in Test).value

testOptions in Test += Tests.Filter(unitFilter)

testOptions in ComponentTest := Seq(Tests.Filter(componentTestFilter))

def componentTestFilter(name: String): Boolean = name endsWith "CT"
再次定义所有设置(javaSource、scalaSource…)感觉不正确

有更好的吗? 或者我应该混合使用.scala和.sbt定义吗?
或者坚持使用.scala?

您可以使用
project
宏引用您的项目

lazy val main = project.in(file(".")).configs(ComponentTest)

lazy val ComponentTest = config("componenttest") extend Test

inConfig(ComponentTest)(Defaults.testTasks) ++ Seq(
  testOptions in ComponentTest := Seq(Tests.Filter(componentTestFilter))
)

def componentTestFilter(name: String): Boolean = name endsWith "CT"
至于你的问题,你是否应该混合使用
.scala
.sbt
。我认为在需要时这是一种有效的方法。
build.sbt
有它自己的代码,例如不同的
.sbt
文件中的代码是不共享的,编写复杂的版本是不方便的(您必须记住在每个语句后添加额外的行,并将所有表达式放在一起)


我想说你应该坚持做任何适合你的事情。

你可以使用
project
宏来引用你的项目

lazy val main = project.in(file(".")).configs(ComponentTest)

lazy val ComponentTest = config("componenttest") extend Test

inConfig(ComponentTest)(Defaults.testTasks) ++ Seq(
  testOptions in ComponentTest := Seq(Tests.Filter(componentTestFilter))
)

def componentTestFilter(name: String): Boolean = name endsWith "CT"
至于你的问题,你是否应该混合使用
.scala
.sbt
。我认为在需要时这是一种有效的方法。
build.sbt
有它自己的代码,例如不同的
.sbt
文件中的代码是不共享的,编写复杂的版本是不方便的(您必须记住在每个语句后添加额外的行,并将所有表达式放在一起)


我想说你应该坚持做任何适合你的事情。

你可以使用
project
宏来引用你的项目

lazy val main = project.in(file(".")).configs(ComponentTest)

lazy val ComponentTest = config("componenttest") extend Test

inConfig(ComponentTest)(Defaults.testTasks) ++ Seq(
  testOptions in ComponentTest := Seq(Tests.Filter(componentTestFilter))
)

def componentTestFilter(name: String): Boolean = name endsWith "CT"
至于你的问题,你是否应该混合使用
.scala
.sbt
。我认为在需要时这是一种有效的方法。
build.sbt
有它自己的代码,例如不同的
.sbt
文件中的代码是不共享的,编写复杂的版本是不方便的(您必须记住在每个语句后添加额外的行,并将所有表达式放在一起)


我想说你应该坚持做任何适合你的事情。

你可以使用
project
宏来引用你的项目

lazy val main = project.in(file(".")).configs(ComponentTest)

lazy val ComponentTest = config("componenttest") extend Test

inConfig(ComponentTest)(Defaults.testTasks) ++ Seq(
  testOptions in ComponentTest := Seq(Tests.Filter(componentTestFilter))
)

def componentTestFilter(name: String): Boolean = name endsWith "CT"
至于你的问题,你是否应该混合使用
.scala
.sbt
。我认为在需要时这是一种有效的方法。
build.sbt
有它自己的代码,例如不同的
.sbt
文件中的代码是不共享的,编写复杂的版本是不方便的(您必须记住在每个语句后添加额外的行,并将所有表达式放在一起)

我想说你应该坚持做任何适合你的事