2016-08-04 7 views
0

sbt-proguardプラグインを動作させるのに苦労しています。難読化したいクラスライブラリがありますが、上記のエラーがなくてもプラグインを出力できないようです。私は維持オプションを指定しているか、またはリースで私が持っていると思うが、私は運がなかった。 ProguardのWebサイトから、クラスライブラリのためのものであると言った保留オプションをコピーしました。さらに、私はプラグインが私が設定したオプションに応答しているとは思わない。sbt-proguard縮小ステップに '-keep'オプションを指定する必要があります

たとえば、出力が私に間違っていることを示す手がかりを与えるかどうかを確認するために、より詳細な出力をしたいと考えました。しかし、ログファイルを見るたびに、常にデフォルトのオプションが指定されます。以下は私の設定です。誰かがこれで私を助けることができますか?私は完全に失われています。ありがとう

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 
) 

答えて

0

私は最終的に私が次の構成でしたいことをするためのプラグインを手に入れました。

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 
) 
関連する問題