Scala 有了SBT,我怎么能有两个不同设置的proguard任务?

Scala 有了SBT,我怎么能有两个不同设置的proguard任务?,scala,sbt,proguard,Scala,Sbt,Proguard,我有一个单一的源代码树,可以从中构建两个不同的jar;叫他们JarA和JarB 我使用的是通过proguard运行每个jar。这个插件创建了一个名为proguard的任务键 我想制作两个任务键,比如proguardA和proguardB,用于构建相应的jar。我已经在project/Build.scala中定义了这些任务键 但是,如何为每个任务使用一组不同的proguard选项?也就是说,如何为设置proguardOptions使用不同的值 我尝试了各种任务范围设置的排列,例如 proguard

我有一个单一的源代码树,可以从中构建两个不同的jar;叫他们JarA和JarB

我使用的是通过proguard运行每个jar。这个插件创建了一个名为
proguard
的任务键

我想制作两个任务键,比如
proguardA
proguardB
,用于构建相应的jar。我已经在project/Build.scala中定义了这些任务键

但是,如何为每个任务使用一组不同的proguard选项?也就是说,如何为设置
proguardOptions
使用不同的值

我尝试了各种任务范围设置的排列,例如

proguardA <<= proguard in proguardA
proguardSettings in (proguard in proguardA) <<= ...
proguardSettings in proguardA <<= ...

proguardA有几种方法可以剥除这只猫的皮肤,但我会在build.scala中定义两种配置:

val ProguardA = config("proguarda") extend(Compile)
val ProguardB = config("proguardb") extend(Compile)
这将使您在
Compile
之外拥有一整套设置。由于xsbt proguard插件目前对
编译
配置的选项进行了硬编码,我们需要修复
proguard
任务

import sbt._
import Keys._
import ProguardPlugin._

object Builds extend Build {
  val ProguardA = config("proguarda") extend(Compile)
  val ProguardB = config("proguardb") extend(Compile)

  val xProguardArgs = TaskKey[List[String]]("x-proguard-args")

  val appSettings = Defaults.defaultSettings ++       
    inConfig(ProguardA)(proguardSettings ++ Seq(
      proguard <<= (packageBin in Compile, xProguardArgs, baseDirectory) map { (_, args, bd) => proguardTask(args, bd) },
      xProguardArgs <<= proguardArgsTask,
      proguardOptions := Seq(keepMain("Test"))
    )) ++
    inConfig(ProguardB)(proguardSettings ++ Seq(
      proguard <<= (packageBin in Compile, xProguardArgs, baseDirectory) map { (_, args, bd) => proguardTask(args, bd) },
      xProguardArgs <<= proguardArgsTask, 
      proguardOptions := Seq(keepAllScala),
      minJarPath <<= (crossTarget, projectID, artifact, scalaVersion, artifactName) { (t, module, a, sv, toString) => t / toString(ScalaVersion(sv, CrossVersion binaryScalaVersion sv), module.copy(revision = module.revision + ".min-b"), a) asFile }
    )) ++
    Seq(
      // name := "foo",
      // libraryDependencies ++= appDependencies
    )

  lazy val app = Project("app", file("."), settings = appSettings)
}
导入sbt_
导入密钥_
导入程序插件_
对象构建扩展构建{
val ProguardA=config(“ProguardA”)扩展(编译)
val ProguardB=config(“ProguardB”)扩展(编译)
val xProguardArgs=TaskKey[List[String]](“x-proguard-args”)
val appSettings=Defaults.defaultSettings++
inConfig(ProguardA)(proguardSettings++Seq(
前卫