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