2016-08-04 3 views
0

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 
) 

Antwort

0

Ich habe endlich das Plugin zu tun, was ich wollte mit der folgenden Konfiguration.

import sbt.Keys._ 
import com.typesafe.sbt.SbtProguard._ 

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 
) 

proguardSettings 

ProguardKeys.proguardVersion in Proguard := "5.2.1" 

ProguardKeys.options in Proguard ++= Seq("-dontnote", "-dontwarn", "-ignorewarnings") 

ProguardKeys.inputs in Proguard <<= (dependencyClasspath in Compile) map { _.files } 

ProguardKeys.filteredInputs in Proguard <++= (packageBin in Compile) map ProguardOptions.noFilter 

val keepClasses = 
    """ 
    |-keepparameternames 
    |-keepattributes Exceptions,InnerClasses,Signature,Deprecated, 
    |    SourceFile,LineNumberTable,*Annotation*,EnclosingMethod 
    | 
    |-keep,includedescriptorclasses interface com.** { 
    | <methods>; 
    |} 
    """.stripMargin 

ProguardKeys.options in Proguard += keepClasses 

lazy val skedaddleCore = (project in file(".")). 
    settings(BuildSettings.buildSettings: _*). 
    settings(
    name := "core", 
    resolvers := Resolvers.all, 
    libraryDependencies ++= commonDependencies 
) 
Verwandte Themen