离开this question,我希望能够以两种不同的方式编译sbt项目,即使用不同的scalacOptions
。重复问题的答案解释了为什么引入另一个配置无济于事,因为您还需要专用的源。
因此。但我不想要专用来源。我想编译完全相同的源,但具有不同的编译器设置。所以我想解决方案必须是定义一个新任务而不是编译。像
val myCompile = taskKey[???]("Compiles my way")
scalacOptions in MyCompile ++= Seq("-elide-below", "1")
然后,我希望尽可能少地使用单独的compile
目录复制默认target
任务,并且可以将其作为myCompile:assembly
...而不是?我该怎么做?
答案 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。