2008/10/27 Stuart McCulloch <[EMAIL PROTECTED]>

> 2008/10/27 Stuart McCulloch <[EMAIL PROTECTED]>
>
>> based on a quick hack of the Guice codebase to switch to reduced
>> versions of Maps, Lists, etc. (as the number of statics used is small)
>> we could shrink the jar to at least 600k, ie. a saving of 30%
>>
>> hmm, I might take a peek at hacking JarJar to do this :)
>>
>
> FYI, I tried switching to use proguard but I couldn't find a way to make
> proguard rename the packages but keep the original class names :(
>

I've opened an issue to track this:

   http://code.google.com/p/google-guice/issues/detail?id=264

ProGuard obfuscation doesn't play well with CGLIB, and adapting
JarJar to trim static methods is non-trivial in the current codebase
so IMHO combining the two in "build.xml" is the best option...


> but you can use it to strip unused static methods and then use jarjar
> to rename the packages (see patch below) - though it would be cool
> if we could get jarjar to do all of this...
>
> the final guice jar after proguard'ing and jarjar'ing is ~600k
>
> --
> Cheers, Stuart
>
>
> Index: build.xml
> ===================================================================
> --- build.xml   (revision 649)
> +++ build.xml   (working copy)
> @@ -11,15 +11,30 @@
>
>    <target name="jar" depends="compile, manifest"
>         description="Build jar.">
> +    <taskdef resource="proguard/ant/task.properties"
> +      classpath="lib/build/proguard.jar"/>
>      <taskdef name="jarjar" classname="com.tonicsystems.jarjar.JarJarTask"
>        classpath="lib/build/jarjar-1.0rc8.jar"/>
>      <mkdir dir="${build.dir}/dist"/>
> +    <proguard>
> +      -libraryjars ${java.home}/lib/rt.jar
> +      -libraryjars ${ant.home}/lib/ant.jar
> +      -libraryjars lib/aopalliance.jar
> +      -injars ${build.dir}/classes
> +      -injars lib/build/cglib-2.2.jar(!META-INF/**)
> +      -injars lib/build/asm-3.1.jar(!META-INF/**)
> +      -injars lib/build/google-collect-snapshot-20080530.jar(!META-INF/**)
> +      -outjars ${build.dir}/stripped.jar
> +      -keep class com.google.inject.** { *; }
> +      -keepclassmembers class !com.google.common.** { *; }
> +      -keepattributes
> +      -dontobfuscate
> +      -dontoptimize
> +      -dontnote
> +    </proguard>
>      <jarjar jarfile="${build.dir}/dist/guice-${version}.jar"
>          manifest="${build.dir}/META-INF/MANIFEST.MF">
> -      <fileset dir="${build.dir}/classes"/>
> -      <zipfileset src="lib/build/cglib-2.2.jar"/>
> -      <zipfileset src="lib/build/asm-3.1.jar"/>
> -      <zipfileset src="lib/build/google-collect-snapshot-20080530.jar"/>
> +      <zipfileset src="${build.dir}/stripped.jar"/>
>        <rule pattern="com.google.common.**"
> result="[EMAIL PROTECTED]"/>
>        <rule pattern="net.sf.cglib.**"
> result="[EMAIL PROTECTED]"/>
>        <rule pattern="org.objectweb.asm.**"
> result="[EMAIL PROTECTED]"/>
>
>


-- 
Cheers, Stuart

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"google-guice" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/google-guice?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to