2014-10-01 83 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

相關問題