2014-10-01 88 views
3

我想运行一些Scala代码,只是暂时打印出“Hello”,但我希望在编译SBT项目中的Scala代码之前运行Scala代码。我发现在build.sbt中有以下工作。如何在编译Scala文件之前在SBT Build.scala中运行Scala代码?

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

但是我希望在Build.scala中做到这点,我如何在Build.scala中做到这一点?

+3

只要你'进口sbt._'和'进口Keys._',你应该能够使用完全相同的是相同的代码在'Build.scala'中。这就是说,你使用'dependsOn'而不是'map':'<< =(在Compile中编译).dependsOn(Def.task {println(“Hello”)})' – sjrd 2014-10-01 13:02:22

+0

@sjrd为什么你不发表评论一个答案? – 2014-10-01 21:26:23

+0

@JacekLaskowski好点。完成。 – sjrd 2014-10-01 21:30:17

回答

3

只要你输入常用的:

import sbt._ 
import Keys._ 

你应该能够准确地使用相同的代码在Build.scala

话虽这么说,你应该使用dependsOn而不是map

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

为什么'map'不能在这里工作?我会说'map'在它映射的任务之后,而'dependsOn'反之亦然。 – 2014-10-01 21:58:28

+1

@JacekLaskowski OP在编译任务之前要求运行*的代码。 'map'使之后执行。 'dependsOn'执行之前。 – sjrd 2014-10-02 06:19:39

+0

没错。对不起,我的困惑。 – 2014-10-02 10:21:00

相关问题