| <!-- This Ant build file illustrates how to process servlets. | |
| Usage: ant -f servlets.xml --> | |
| <project name="Servlets" default="obfuscate" basedir="../.."> | |
| <target name="obfuscate"> | |
| <taskdef resource="proguard/ant/task.properties" | |
| classpath="lib/proguard.jar" /> | |
| <proguard verbose="true" | |
| printseeds="on" | |
| printmapping="proguard.map" | |
| renamesourcefileattribute="SourceFile"> | |
| <!-- Specify the input jars, output jars, and library jars. --> | |
| <injar file="in.jar" /> | |
| <outjar file="out.jar" /> | |
| <libraryjar file="${java.home}/lib/rt.jar" /> | |
| <!-- Optionally preserve line numbers in the obfuscated stack traces. | |
| <keepattribute name="LineNumberTable"> | |
| <keepattribute name="SourceFile"> | |
| --> | |
| <!-- Preserve all annotations. --> | |
| <keepattribute name="*Annotation*" /> | |
| <!-- Keep all public servlets. --> | |
| <keep access="public" implements="javax.servlet.Servlet" /> | |
| <!-- Preserve all native method names and the names of their classes. --> | |
| <keepclasseswithmembernames includedescriptorclasses="true"> | |
| <method access="native" /> | |
| </keepclasseswithmembernames> | |
| <!-- Preserve the methods that are required in all enumeration classes. --> | |
| <keepclassmembers allowoptimization="true" type="enum"> | |
| <method access="public static" | |
| type="**[]" | |
| name="values" | |
| parameters="" /> | |
| <method access="public static" | |
| type="**" | |
| name="valueOf" | |
| parameters="java.lang.String" /> | |
| </keepclassmembers> | |
| <!-- Explicitly preserve all serialization members. The Serializable | |
| interface is only a marker interface, so it wouldn't save them. | |
| You can comment this out if your library doesn't use serialization. | |
| If your code contains serializable classes that have to be backward | |
| compatible, please refer to the manual. --> | |
| <keepclassmembers implements="java.io.Serializable"> | |
| <field access ="static final" | |
| type ="long" | |
| name ="serialVersionUID" /> | |
| <field access ="static final" | |
| type ="java.io.ObjectStreamField[]" | |
| name ="serialPersistentFields" /> | |
| <method access ="private" | |
| type ="void" | |
| name ="writeObject" | |
| parameters="java.io.ObjectOutputStream" /> | |
| <method access ="private" | |
| type ="void" | |
| name ="readObject" | |
| parameters="java.io.ObjectInputStream" /> | |
| <method type ="java.lang.Object" | |
| name ="writeReplace" | |
| parameters="" /> | |
| <method type ="java.lang.Object" | |
| name ="readResolve" | |
| parameters="" /> | |
| </keepclassmembers> | |
| <!-- Your application may contain more items that need to be preserved; | |
| typically classes that are dynamically created using Class.forName --> | |
| </proguard> | |
| </target> | |
| </project> |