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