<!-- This Ant build file illustrates how to process applications,
     using a full-blown XML configuration.
     Usage: ant -f applications.xml -->

<project name="Applications" default="obfuscate" basedir="../..">

<target name="obfuscate">
  <taskdef resource="proguard/ant/task.properties"
           classpath="lib/proguard.jar" />

  <proguard printseeds="on">

    <!-- Specify the input jars, output jars, and library jars. -->

    <injar  file="in.jar" />
    <outjar file="out.jar" />

    <libraryjar file="${java.home}/lib/rt.jar" />
    <!-- libraryjar file="junit.jar"           / -->
    <!-- libraryjar file="servlet.jar"         / -->
    <!-- libraryjar file="jai_core.jar"        / -->
    <!-- ...                                   / -->


    <!-- Preserve all public applications. -->

    <keepclasseswithmembers access="public">
      <method access    ="public static"
              type      ="void"
              name      ="main"
              parameters="java.lang.String[]" />
    </keepclasseswithmembers>

    <!-- Preserve all annotations. -->

    <keepattribute name="*Annotation*" />

    <!-- Preserve all native method names and the names of their classes. -->

    <keepclasseswithmembernames>
      <method access="native" />
    </keepclasseswithmembernames>

    <!-- Preserve the methods that are required in all enumeration classes. -->

    <keepclassmembers extends="java.lang.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>
