scala – 使用SBT,如何使用不同的设置进行两个不同的proguard任
发布时间:2020-12-16 19:25:25 所属栏目:安全 来源:网络整理
导读:我有一个单一的源树,我可以从中构建两个不同的罐子;称他们为JarA和JarB. 我正在使用sbt proguard plugin通过proguard运行每个jar.此插件创建一个名为proguard的任务键. 我想制作两个任务键,比如proguardA和proguardB,它们构建了各自的罐子.我在project / Bui
我有一个单一的源树,我可以从中构建两个不同的罐子;称他们为JarA和JarB.
我正在使用sbt proguard plugin通过proguard运行每个jar.此插件创建一个名为proguard的任务键. 我想制作两个任务键,比如proguardA和proguardB,它们构建了各自的罐子.我在project / Build.scala中定义了这些任务键. 但是,如何为每项任务使用不同的proguard选项集?也就是说,如何为设置proguardOptions使用不同的值? 我尝试了各种任务范围设置的排列,例如 proguardA <<= proguard in proguardA proguardSettings in (proguard in proguardA) <<= ... proguardSettings in proguardA <<= ... 等等 但这些都没有生效. 解决方法
有几种方法可以为这只猫设置皮肤,但我在build.scala中定义了两个配置:
val ProguardA = config("proguarda") extend(Compile) val ProguardB = config("proguardb") extend(Compile) 这将让您在Compile之外拥有一整套设置.由于xsbt-proguard-plugin目前硬编码编译配置选项,我们需要修复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,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) } 您现在可以将其作为proguarda:proguard运行,或者根据ProguardA中的proguard创建任务proguarda.此外,您必须每次更改minJarPath或运行干净以避免缓存拾取错误的jar. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |