Compilation sbt编译具有不同选项的任务

Compilation sbt编译具有不同选项的任务,compilation,sbt,Compilation,Sbt,我有一个基本的sbt项目。我想用相同的源文件打包两个JAR,但使用不同的选项进行编译。 因此,一个项目,两个编译,但有不同的选项(ScalaOptions)和两个JAR作为输出。我不想执行两次sbt,更改选项 有人有什么想法吗?使用build.sbt中的类似内容,您可以运行sbt compile2:package并从compile2配置和compile2配置生成jar: val Compile2 = config("compile2") extend Compile inConfig(Comp

我有一个基本的sbt项目。我想用相同的源文件打包两个JAR,但使用不同的选项进行编译。 因此,一个项目,两个编译,但有不同的选项(ScalaOptions)和两个JAR作为输出。我不想执行两次sbt,更改选项


有人有什么想法吗?

使用build.sbt中的类似内容,您可以运行sbt compile2:package并从compile2配置和compile2配置生成jar:

val Compile2 = config("compile2") extend Compile

inConfig(Compile2)(Defaults.compileSettings ++ Seq(
    // these options can be set as "in Compile2" outside of inConfig as well
    scalacOptions := SECOND-OPTIONS-LIST,
    // otherwise it will be "src/compile2", you want it to be "src/main"
    sourceDirectory <<= sourceDirectory in Compile,
    sbt.Keys.`package` <<= sbt.Keys.`package` dependsOn (sbt.Keys.`package` in Compile)
))

scalacOptions in Compile := BASIC-OPTIONS-LIST
val Compile2=config(“Compile2”)扩展编译
inConfig(Compile2)(Defaults.compileSettings++Seq(
//这些选项也可以在inConfig之外设置为“in Compile2”
scalacOptions:=第二个选项列表,
//否则它将是“src/compile2”,您希望它是“src/main”

sourceDirectory使用sbt这是一个非常重要的问题。最简单的方法是创建一个新的配置,扩展编译,并在该配置中创建一个包任务。生成自己的包时,它将依赖于编译中的包。总的来说,这不是一件容易的工作