<@U4H0M349G> <@U3JDL750W> Great slides indeed. Any...
# server
s
@dave @s4nchez Great slides indeed. Any example or hints about how to shrink uberjar with ProGuard for server-side use case ?
d
I'm not really an expert.. but using gradle there are 2 bits to it. 1. we have a proguard file proguard.txt with this
Copy code
-keepparameternames
-renamesourcefileattribute SourceFile
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod
-keepclassmembernames class * { java.lang.Class class$(java.lang.String); java.lang.Class class$(java.lang.String, boolean); }
-optimizations !code/allocation/variable

-dontwarn kotlin.**
-dontwarn com.amazonaws.**
-dontwarn org.http4k.**
-dontwarn com.fasterxml.**
-dontwarn org.eclipse.jetty.**
-dontwarn android.**
-dontwarn javax.**
-dontwarn org.codehaus.**

-keepclasseswithmembernames class * {
    native <methods>;
}

-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}
2. in build.gradle:
Copy code
dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath 'net.sf.proguard:proguard-gradle:5.3.3'
    }
and
Copy code
task proguard(type: ProGuardTask, dependsOn: 'jar') {
    configuration 'proguard.txt'

    injars "$buildDir/libs/${project.name}-${version}.jar"
    outjars "$buildDir/libs/${project.name}-${version}-out.jar"

    keep "public class ${mainAppLoaderClassName} { *; } "
    keep "public class org.http4k.aws.lambda.** { *; } "

    libraryjars "${System.getProperty('java.home')}/lib/rt.jar"
    libraryjars "${System.getProperty('java.home')}/lib/jce.jar"
    libraryjars configurations.compileOnly
}
that's after having built an uberjar.
s
@dave Thanks