如何在SBT的Build.scala文件中,在Scala文件编译之前运行Scala代码?

3

我想运行一些Scala代码,暂时只是为了打印出“Hello”,但我希望在SBT项目中编译Scala代码之前运行Scala代码。我发现在build.sbt中可以使用以下内容。

compile in Compile <<= compile in Compile map {
  comp => {
    println("Hello")
  }
  comp
}

然而,我希望在Build.scala中完成它,我该如何在Build.scala中实现?

3
只要你导入sbt._Keys._,你就可以在Build.scala中完全使用相同的代码。不过需要注意的是,你需要使用dependsOn而不是map<<= (compile in Compile).dependsOn(Def.task { println("Hello") }) - sjrd
@sjrd 为什么不把这个评论写成答案呢? - Jacek Laskowski
@JacekLaskowski 好的,你说得对。已完成。 - sjrd
1个回答

4
只要您导入通常需要的内容:
import sbt._
import Keys._

你应该能够在Build.scala中使用完全相同的代码。

话虽如此,你应该使用dependsOn而不是map

compile in Compile <<= (compile in Compile).dependsOn(Def.task {
  println("Hello")
})

为什么这里不能用map呢?我认为map是在执行它所映射的任务之后,而dependsOn则使得依赖关系相反。 - Jacek Laskowski
1
@JacekLaskowski,OP要求在编译任务之前运行代码。map会使其在之后执行。dependsOn会在之前执行。 - sjrd
没问题。抱歉我有点糊涂了。 - Jacek Laskowski

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接