如何创建一个单独的编译任务,没有单独的配置,但不同的scalacOptions?

时间:2016-01-06 13:10:39

标签: scala sbt

离开this question,我希望能够以两种不同的方式编译sbt项目,即使用不同的scalacOptions。重复问题的答案解释了为什么引入另一个配置无济于事,因为您还需要专用的源。

因此。但我不想要专用来源。我想编译完全相同的源,但具有不同的编译器设置。所以我想解决方案必须是定义一个新任务而不是编译。像

val myCompile = taskKey[???]("Compiles my way")

scalacOptions in MyCompile ++= Seq("-elide-below", "1")

然后,我希望尽可能少地使用单独的compile目录复制默认target任务,并且可以将其作为myCompile:assembly ...而不是?我该怎么做?

2 个答案:

答案 0 :(得分:2)

tl; dr 使用inspect了解compile的返回类型。

> inspect compile
[info] Task: sbt.inc.Analysis
...

有了这个,你应该在build.sbt

中拥有以下内容
val myCompile = taskKey[sbt.inc.Analysis]("Compiles my way")
myCompile <<= compile in Compile

scalacOptions in myCompile ++= Seq("-elide-below", "1")

答案 1 :(得分:0)

您仍然可以使用单独的配置并添加

sourceDirectory in MyCompile := (sourceDirectory in Compile).value

使用src/main/*来源,如sbt compile tasks with different options