1# 2# This ProGuard configuration file illustrates how to process servlets. 3# Usage: 4# java -jar proguard.jar @servlets.pro 5# 6 7# Specify the input jars, output jars, and library jars. 8 9-injars in.jar 10-outjars out.jar 11 12-libraryjars <java.home>/lib/rt.jar 13-libraryjars /usr/local/java/servlet/servlet.jar 14 15# Save the obfuscation mapping to a file, so you can de-obfuscate any stack 16# traces later on. Keep a fixed source file attribute and all line number 17# tables to get line numbers in the stack traces. 18# You can comment this out if you're not interested in stack traces. 19 20-printmapping out.map 21-renamesourcefileattribute SourceFile 22-keepattributes SourceFile,LineNumberTable 23 24# Preserve all annotations. 25 26-keepattributes *Annotation* 27 28# You can print out the seeds that are matching the keep options below. 29 30#-printseeds out.seeds 31 32# Preserve all public servlets. 33 34-keep public class * implements javax.servlet.Servlet 35 36# Preserve all native method names and the names of their classes. 37 38-keepclasseswithmembernames,includedescriptorclasses class * { 39 native <methods>; 40} 41 42# Preserve the special static methods that are required in all enumeration 43# classes. 44 45-keepclassmembers,allowoptimization enum * { 46 public static **[] values(); 47 public static ** valueOf(java.lang.String); 48} 49 50# Explicitly preserve all serialization members. The Serializable interface 51# is only a marker interface, so it wouldn't save them. 52# You can comment this out if your library doesn't use serialization. 53# If your code contains serializable classes that have to be backward 54# compatible, please refer to the manual. 55 56-keepclassmembers class * implements java.io.Serializable { 57 static final long serialVersionUID; 58 static final java.io.ObjectStreamField[] serialPersistentFields; 59 private void writeObject(java.io.ObjectOutputStream); 60 private void readObject(java.io.ObjectInputStream); 61 java.lang.Object writeReplace(); 62 java.lang.Object readResolve(); 63} 64 65# Your application may contain more items that need to be preserved; 66# typically classes that are dynamically created using Class.forName: 67 68# -keep public class mypackage.MyClass 69# -keep public interface mypackage.MyInterface 70# -keep public class * implements mypackage.MyInterface 71