Search code examples
javaproguardsnmpsnmp4j

How can i shrink SNMP4J library to extract trap sending feature


I want a specific feature (Traps) from SNMP4j, is there a way to get a new jar which only has this feature?


Solution

  • We can use proguard for this feature.

    1 Download proguard from https://sourceforge.net/projects/proguard/

    2 Create a file(shrink.pro) in libs folder of proguard and paste following lines

    -injars      snmp.jar 
    -outjars     out.jar 
    -libraryjars <java.home>/lib/rt.jar
    -printmapping out.map 
    
    -dontwarn
    -ignorewarnings
    -keepattributes
    
    -keep public class org.snmp4j.smi.OID
    -keep public class org.snmp4j.CommunityTarget
    -keep public class org.snmp4j.smi.UdpAddress
    -keep public class org.snmp4j.TransportMapping
    -keep public class org.snmp4j.smi.OctetString
    -keep public class org.snmp4j.smi.Variable
    -keep public class org.snmp4j.transport.DefaultUdpTransportMapping
    -keep public class org.snmp4j.smi.Address
    -keep public class org.snmp4j.PDUv1
    -keep public class org.snmp4j.smi.VariableBinding
    -keep public class org.snmp4j.Snmp
    -keep public class org.snmp4j.PDU
    -keep public class org.snmp4j.ScopedPDU
    -keep public class org.snmp4j.UserTarget
    -keep public class org.snmp4j.mp.MPv3
    -keep public class org.snmp4j.mp.SnmpConstants
    -keep public class org.snmp4j.security.AuthMD5
    -keep public class org.snmp4j.security.PrivDES
    -keep public class org.snmp4j.security.SecurityLevel
    -keep public class org.snmp4j.security.SecurityModel
    -keep public class org.snmp4j.security.SecurityModels
    -keep public class org.snmp4j.security.SecurityProtocols
    -keep public class org.snmp4j.security.USM
    -keep public class org.snmp4j.security.UsmUser
    -keep public class org.snmp4j.smi.IpAddress
    

    3 run following command

    java -jar proguard.jar @shrink.pro
    

    4 You will get your new jar in libs folder of proguard.