【学習ノート】proguardによるJAVAコード混同(MavenベースSpringBootエンジニアリング)

5381 ワード

今日1024、1篇の前の記録を整理して、10241024 K=1 GB(一級棒)を記念します.
会社が入庫バージョンのコードを混同する必要があると要求したため、この無意味な作業を行い、多角的に調査した結果、混同に成功した.次にpoguardをmavenプロジェクトに埋め込み、パッケージ化する方法を紹介します.
メソッドを使用して、proguard.cfgファイルをpomファイルの兄弟ディレクトリの下に配置し、pomファイルで構成してパッケージ化します.
ピット回避ガイド:pomファイルのpoguard混同構成は必ずcompolierコンパイルモジュールの前にしなければならない.そうしないと、混同後のコードは逃げられない.
1.混同構成:poguard.cfg構成ファイル
-target 1.8 ##  java   
-ignorewarnings  ##     ,      
-keepdirectories
-dontwarn  ##   
-dontshrink ##      ,    shrink,          /  
-dontoptimize ##      ,            
-useuniqueclassmembernames ##                 
-adaptclassstrings ##       ,   Class.forName('className')           
-dontusemixedcaseclassnames ##               ,          
-dontskipnonpubliclibraryclasses
-dontskipnonpubliclibraryclassmembers
-allowaccessmodification
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,LocalVariable*Table,*Annotation*,Synthetic,EnclosingMethod ##   、     runtime    ,    springboot  
-keeppackagenames
-adaptclassstrings
-keepparameternames
-keepclassmembers class * {@org.springframework.beans.factory.annotation.Autowired *;
                            @org.springframework.beans.factory.annotation.Value *;
                             @org.springframework.context.annotation.ComponentScan *;
                             @org.mybatis.spring.annotation.MapperScan *;}
-keep class !com.xxx.xxx.demo.** { *; }
-keep class com.xxx.xxx.demo.DemoApplication { *; }
-keepclassmembers public class * {void set*(***);*** get*();}
-keepclassmembers enum * { *; }  ##         
#        
-keep class com.xxx.xxx.demo.controller.**
-keep class com.xxx.xxx.demo.config.**
-keep class com.xxx.xxx.demo.manager.**
-keep class com.xxx.xxx.demo.mq.**
#           
-keep class com.xxx.xxx.demo.dao.** {*;}
-keep class com.xxx.xxx.demo.exception.** {*;}
-keep class com.xxx.xxx.demo.handler.** {*;}
-keep class com.xxx.xxx.demo.model.** {*;}
-keep class com.xxx.xxx.demo.service.** {*;}
-keep class com.xxx.xxx.demo.util.** {*;}

2.pomファイル構成、場所:pluginsモジュールの下に最初に配置
    
            
                com.github.wvengen
                proguard-maven-plugin
                
                    
                        package
                        
                            proguard
                        
                    
                
                
                    6.1.0
                    ${project.build.finalName}.jar
                    ${project.build.finalName}.jar
                    true
                    ${project.basedir}/proguard.cfg
                    
                        
                        ${java.home}/lib/rt.jar
                        
                        ${java.home}/lib/jce.jar
                    
                
                
                    
                        net.sf.proguard
                        proguard-base
                        6.1.0
                    
                
            
            
                .....
            
            
             
                org.apache.maven.plugins
                maven-compiler-plugin
                3.3
                
                    1.8
                    1.8
                    UTF-8
                    
                        -parameters
                    
                
            

3.mavenパッケージ
mavenツールをパッケージ化すると、コンソールから[poguard]という混同プロセスが出力され、targetフォルダの下でjarパッケージがパッケージ完了後のパッケージであることがわかります.
注意点:
パッケージ・プロンプトにプライマリ・クラスがない場合はpomファイルに構成を追加します.
     
                org.springframework.boot
                spring-boot-maven-plugin
                
                    1.8
                    1.8
                    
                        
                            com.xxx.demo.DemoApplication
                            true
                            jar/
                        
                    
                    true
                
                
                    
                        
                            repackage