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

所以。但我不希望有专门的消息来源。我想编译完全相同的源,但使用不同的编译器设置。因此,我想解决方案必须是定义一个新任务,而不是进行编译。喜欢

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

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

然后,我希望以最小的努力将默认的compile任务复制到一个单独的target目录中,并且可以将其提供给myCompile:assembly ...吗?我该怎么做?

最佳答案

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")

10-04 11:02