Ich habe Schwierigkeiten, das sbt-proguard Plugin zum Laufen zu bringen. Ich habe eine Klassenbibliothek, die ich verschleiern möchte, aber ich kann nicht scheinen, dass das Plugin ohne den obigen Fehler ausgegeben wird. Ich habe die Keep-Option angegeben, oder zumindest denke ich, dass ich habe, aber ich hatte kein Glück. Ich kopierte die Aufbewahrungsoptionen von der Proguard-Website, die besagt, dass es für Klassenbibliotheken gedacht war. Außerdem glaube ich nicht, dass das Plug-in die von mir konfigurierten Optionen beantwortet.sbt-proguard Sie müssen '-keep' Optionen für den schrumpfenden Schritt angeben
Zum Beispiel wollte ich eine ausführlichere Ausgabe haben, um zu sehen, ob die Ausgabe mir einen Hinweis geben könnte, was ich falsch mache. Wenn ich jedoch die Protokolldateien anschaue, werden immer die Standardoptionen angegeben. Unten ist meine Konfiguration. Kann mir jemand mit diesem helfen? Ich bin völlig verloren. Danke
import sbt.Keys._
import com.typesafe.sbt.SbtProguard._
import ProguardKeys._
lazy val commonDependencies = Seq(
Dependencies.Libraries.junit,
Dependencies.Libraries.springBootLogging,
Dependencies.Libraries.scalaMock,
Dependencies.Libraries.joda,
Dependencies.Libraries.scalaTestPlus,
Dependencies.Libraries.scalaXml,
Dependencies.Libraries.commonsCodec,
Dependencies.Libraries.typeSafeConfig
)
val keepClasses =
"""
|-injars in.jar
|-outjars out.jar
|-libraryjars <java.home>/lib/rt.jar
|-printmapping out.map
|
|-keepparameternames
|-renamesourcefileattribute SourceFile
|-keepattributes Exceptions,InnerClasses,Signature,Deprecated,
| SourceFile,LineNumberTable,*Annotation*,EnclosingMethod
|
|-keep public class * {
| public protected *;
|}
|
|-keepclassmembernames class * {
| java.lang.Class class$(java.lang.String);
| java.lang.Class class$(java.lang.String, boolean);
|}
|
|-keepclasseswithmembernames,includedescriptorclasses class * {
| native <methods>;
|}
|
|-keepclassmembers,allowoptimization enum * {
| public static **[] values();
| public static ** valueOf(java.lang.String);
|}
|
|-keepclassmembers class * implements java.io.Serializable {
| static final long serialVersionUID;
| private static final java.io.ObjectStreamField[] serialPersistentFields;
| private void writeObject(java.io.ObjectOutputStream);
| private void readObject(java.io.ObjectInputStream);
| java.lang.Object writeReplace();
| java.lang.Object readResolve();
|}
""".stripMargin
proguardSettings
lazy val skedaddleCore = (project in file(".")).
settings(BuildSettings.buildSettings: _*).
settings(
name := "core",
resolvers := Resolvers.all,
libraryDependencies ++= commonDependencies,
merge in Proguard := true,
proguardVersion in Proguard := "5.2.1",
options in Proguard --= Seq("-dontnote", "-dontwarn", "-ignorewarnings"),
options in Proguard ++= Seq("-verbose", "-dontshrink"),
options in Proguard += keepClasses
)