**Proguard+Maven混淆java web项目**

Proguard+Maven混淆java web项目## 标题
这里用到的是常用配置,更多详细配置方法和参数信息见官网:https://www.guardsquare.com/en/products/proguard/manual/usage#keepoptions

  1. proguard常用关键字
    dontshrink 不压缩
    dontoptimize 不优化
    keep 保留类和类中的成员,防止被混淆或移除
    keepclassmembers 只保留类中的成员,防止被混淆或移除
    dontwarn 一个和keep可以说是形影不离,尤其是处理引入的library时,不显示警告信息

  2. proguard通配符

    *匹配任意长度字符,不包含包名分隔符(.)
    ** 匹配任意长度字符,包含包名分隔符(.)
    *** 匹配任意参数类型

  3. 哪些不应该混淆
    a. 使用了枚举要保证枚举不被混淆
    b. 对第三方库中的类不进行混淆
    c. 运用了反射的类也不进行混淆
    d. 交给Spring管理的类
    e. JNI中调用的类
    f. Test类

  4. 混淆模板
    a. 在需要被混淆工程的pom文件中加入以下配置,具体配置的参数意义已注释。

    
    		
            
                com.github.wvengen
                proguard-maven-plugin
                2.0.11
                
                    
                        
                        package
                        
                            
                            proguard
                        
                    
                
                
                    
                    true
                    
                    true
                    
                    pg
                    
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
                        
						 
						
						
						
						
						
						
						
						
						
						
						
						
						
						
						
						
						
						
						
						
						
						
						
 						
						
						
						
						
						
                 				
                    
                    
                    
                    
                        ${java.home}/lib/rt.jar
                        ${java.home}/lib/jsse.jar
						${java.home}/lib/jce.jar
						${java.home}/lib/charsets.jar
						${java.home}/lib/jfr.jar
						${java.home}/lib/ext/access-bridge-64.jar
						${java.home}/lib/ext/cldrdata.jar
						${java.home}/lib/ext/dnsns.jar
						${java.home}/lib/ext/jaccess.jar
						${java.home}/lib/ext/jfxrt.jar
						${java.home}/lib/ext/localedata.jar
						${java.home}/lib/ext/nashorn.jar
						${java.home}/lib/ext/sunec.jar
						${java.home}/lib/ext/sunjce_provider.jar
						${java.home}/lib/ext/sunmscapi.jar
						${java.home}/lib/ext/sunpkcs11.jar
						${java.home}/lib/ext/zipfs.jar
                    
                    false
                    
                    ${project.build.finalName}.jar
                    
                    ${project.build.finalName}-pg.jar
                    ${project.build.directory}

                
            
    	

b. 配置完成后,maven clean compile install到本地仓库,以备被其他工程依赖。

  1. 工程相互依赖(A依赖混淆后的B工程)
    在A工程的pom文件中的依赖中加入如下配置
		
			com.iflytek
			B
			
			pg
			${ version}
		

你可能感兴趣的:(代码混淆)