Browse Source

第二轮整体测试,代码优化、逻辑完善、bug修复

JustryDeng 5 năm trước cách đây
mục cha
commit
b18d667cb7

+ 30 - 24
class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/MixTest.java → class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/AllTest.java

@@ -3,66 +3,72 @@ package winter.com.ideaaedi.classwinter;
 import winter.com.ideaaedi.classwinter.author.JustryDeng;
 import winter.com.ideaaedi.classwinter.executor.EncryptExecutor;
 import winter.com.ideaaedi.classwinter.util.BashUtil;
+import winter.com.ideaaedi.classwinter.util.Constant;
 import winter.com.ideaaedi.classwinter.util.Logger;
 import winter.com.ideaaedi.classwinter.util.PathUtil;
 
 /**
- * 混合测试
+ * 全参数测试
  *
  * @author {@link JustryDeng}
  * @since 2021/5/6 23:25:24
  */
-public class MixTest {
+public class AllTest {
     
     public static void main(String[] args) {
-        Logger.info(MixTest.class, encryptTest());
+        // 杀下进程(以保证端口没有被占用)
+        BashUtil.killProcessByPorts("8080");
+        
+        // 加密
+        String encryptedJar = encryptTest();
+    
+        // 解密(模拟启动加密后的jar包)
+        // String javaagentArgs = "";
+        String javaagentArgs = "=debug=true,password=pwd12345";
+        BashUtil.runCmdAndPrint(String.format("java -javaagent:%s%s -jar %s", encryptedJar, javaagentArgs, encryptedJar));
     }
     
     /**
-     * 加密测试
+     * 加密
      */
     public static String encryptTest() {
-    
-        // 杀下进程(以保证端口没有被占用)
-        BashUtil.killProcessByPorts("8080");
-        String projectRootDir = PathUtil.getProjectRootDir(MixTest.class);
-        
+        String projectRootDir = PathUtil.getProjectRootDir(AllTest.class);
         EncryptExecutor encryptExecutor = EncryptExecutor.builder()
                 //(必须)-> 加密spring-boot可执行jar包
-//                .originJarOrWar(projectRootDir + Constant.LINUX_FILE_SEPARATOR + "boot-jar.jar")
+                .originJarOrWar(projectRootDir + "boot-jar.jar")
                 // 加密普通jar包
-//                 .originJarOrWar(projectRootDir + "normal-jar.jar")
-                 .originJarOrWar(projectRootDir + "tmp/my-project-with-encrypted-lib-have-pwd.jar")
+                // .originJarOrWar(projectRootDir + "normal-jar.jar")
                 // 加密war包
                 // .originJarOrWar(projectRootDir + "war-project.war")
                 
                 // (必须)-> 前缀匹配的方式,指定需要加密的class
                 // 逗号后面有没有空格都可以
-                //.includePrefix("com.aspire.ssm.config,com.aspire.ssm.util,com.zaxxer.hikari,com.fasterxml.jackson")
-                .includePrefix("com.aspire.ssm123")
+                .includePrefix("com.aspire.ssm,com.zaxxer.hikari,com.fasterxml.jackson")
+                
+                // (可选)-> 前缀匹配的方式,指定需要忽略加密的class,用于对includePrefix指定的范围中的目标进行排除
+                // 逗号后面有没有空格都可以
+                .excludePrefix("com.aspire.config,com.aspire.util.Person")
                 
                 // (可选)-> 指定加密后的jar包的名称, 会在同目录下生成abc-encrypted.jar
                 // 若与原jar(or war)同名,则会覆盖原来的jar(or war)包.
                 // 若不指定,则生成的 加密后的jar(or war)包名为 = 原名-encrypted.jar
-                //.finalName("abc-encrypted")
+                .finalName("jd")
                 
                 // (可选)-> 指定加密密码(若不指定,则系统会自动生成)
-//                .password("qwer123~")
-                
-                // (可选)-> 前缀匹配的方式,指定需要忽略加密的class,用于对includePrefix指定的范围中的目标进行排除
-                // 逗号后面有没有空格都可以
-                //.excludePrefix("com.aspire.ssm.util.EmployeePO,com.aspire.ssm.util.ClazzDumpCustomAgent")
+                .password("pwd12345")
                 
                 // (可选)-> 前缀匹配的方式,指定还需额外对jar的依赖包libs中的哪些jar进行加密,更多解释详见net.jd.classwinter.executor.EncryptExecutor.includeLibSet上面的javadoc
                 // 逗号后面有没有空格都可以
-                //.includeLibs("HikariCP-3.2.0.jar,jackson-core-2.9.9.jar")
+                .includeLibs("HikariCP-3.2.0.jar,jackson-core-2.9.9.jar")
                 
                 // (可选)-> 提示信息,当用户直接启动项目而不使用javaagent启动时,程序提示tips信息后会停止
-                //.tips("方法已经被class-winter加密保护了,请不要直接使用java -jar xxx.jar启动项目,请使用java -javaagent:xxx.jar -jar xxx.jar启动项目.")
+                .tips("方法已经被class-winter加密保护了,请不要直接使用java -jar xxx.jar启动项目,请使用java -javaagent:xxx.jar -jar xxx.jar启动项目.")
         
                 // (可选)-> 指明当前项依赖来的lib中,有哪些lib是本身就已经是被class-winter混淆了的
                 //  格式形如 xxx.jar:password, 多个之间使用逗号分割, 如果当初对该lib进行混淆时没有主动指定密码,那么可以不写
-                //.alreadyProtectedLibs("encrypted-lib-no-pwd.jar")
+                //.alreadyProtectedLibs("xxx1.jar,xxx2.jar")
+                //.alreadyProtectedLibs("xxx1.jar:pwd1,xxx2.jar")
+                //.alreadyProtectedLibs("xxx1.jar:pwd1,xxx2.jar:pwd2")
                 .alreadyProtectedLibs("encrypted-lib-have-pwd-1.0.0.jar:qwer123~")
         
                 // (可选)-> 加密时,额外往加密上下文中添加的jar文件(或者jar文件所在的目录)
@@ -83,7 +89,7 @@ public class MixTest {
                 // 进一步说明了
                 //     要加密的jar包没有把mybatis的lib包打进去。
                 // 这时,我们就可以通过指定此字段的值为mybatisjar包的全路径名(如/tmp/lib/mybatis-3.5.1.jar)来解决问题。
-//                .supportFile("E:\\Maven\\Repository\\org\\mybatis\\mybatis\\3.5.1\\mybatis-3.5.1.jar")
+                .supportFile(projectRootDir + "help2")
                 
                 // (可选)-> 是否开启debug模型以获取更多日执行信息(默认为false)
                 .debug(true)

BIN
class-winter-core/src/test/resources/help2/metrics-core-3.0.2.jar


BIN
class-winter-core/src/test/resources/help2/metrics-healthchecks-3.2.0.0.jar


BIN
class-winter-core/src/test/resources/help2/micrometer-core-1.0.0.jar


BIN
class-winter-core/src/test/resources/help2/simpleclient-0.9.0.jar