Browse Source

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

JustryDeng 5 years ago
parent
commit
4e87fbe116

+ 1 - 1
class-winter-core/src/main/java/winter/com/ideaaedi/classwinter/Reverses.java

@@ -135,7 +135,7 @@ public class Reverses {
                  * @return lib名称
                  */
                 private String parseLib(String classWinterInfoDir) {
-                    classWinterInfoDir = classWinterInfoDir.replace(Constant.MANIFEST_FILE, "");
+                    classWinterInfoDir = classWinterInfoDir.replace(Constant.DEFAULT_ENCRYPTED_CLASSES_SAVE_DIR, "");
                     return classWinterInfoDir.replace("_jar/", Constant.JAR_SUFFIX);
                 }
             });

+ 2 - 2
class-winter-core/src/main/java/winter/com/ideaaedi/classwinter/executor/DecryptExecutor.java

@@ -52,7 +52,7 @@ public class DecryptExecutor {
      * @return  解压后的字节(null-表示classLongName所代表的文件不应该被解密)
      */
     public static byte[] process(String projectPath, String classWinterInfoDir, String classLongName, char[] password) {
-        classWinterInfoDir = StrUtil.isBlank(classWinterInfoDir) ? Constant.MANIFEST_FILE : classWinterInfoDir;
+        classWinterInfoDir = StrUtil.isBlank(classWinterInfoDir) ? Constant.DEFAULT_ENCRYPTED_CLASSES_SAVE_DIR : classWinterInfoDir;
         // 读取文件
         byte[] bytes = IOUtil.readFileFromWorkbenchRoot(new File(projectPath), classWinterInfoDir + classLongName);
         // 检查密码一致性
@@ -231,7 +231,7 @@ public class DecryptExecutor {
      */
     private static char[] obtainAutoGeneratedPwdWhileEncrypt(String projectPath, String classWinterInfoDir) {
         // 项目本身
-        if (classWinterInfoDir.equals(Constant.MANIFEST_FILE)) {
+        if (classWinterInfoDir.equals(Constant.DEFAULT_ENCRYPTED_CLASSES_SAVE_DIR)) {
             if (Cache.passwordCache != null) {
                 // 从缓存读取
                 return Cache.passwordCache;

+ 7 - 4
class-winter-core/src/main/java/winter/com/ideaaedi/classwinter/executor/EncryptExecutor.java

@@ -193,15 +193,18 @@ public class EncryptExecutor {
     public String process() {
         // step0. 解压jar到jarRootDir下
         JarUtil.unJarWar(originJarOrWar, targetRootDir);
+        
         // step1. jar中的某些lib可能也需要加密,这里先(将那些需要加密的lib)进行解压,(解压到对应的临时目录,以便后面进行加密处理)
         unLibJar();
+        
         // step2. 找到需要加密混淆的class文件
         File targetRootDirFile = new File(targetRootDir);
         List<File> allFiles = IOUtil.listSubFile(targetRootDirFile, 1);
         List<File> allNeedEncryptedClassFileList = filterClasses(allFiles);
+        
         // step3.1. 根据原.class文件,生成加密后的.class文件,并存至Constant.ENCRYPTED_CLASSES_SAVE_DIR
         List<String> allAlreadyEncryptedClassFileList = encryptClasses(allNeedEncryptedClassFileList, new File(targetRootDir,
-                Constant.MANIFEST_FILE));
+                Constant.DEFAULT_ENCRYPTED_CLASSES_SAVE_DIR));
         // step3.2. 生成记录已加密class的全类名的清单文件
         generateChecklistFile(allAlreadyEncryptedClassFileList);
         
@@ -335,8 +338,8 @@ public class EncryptExecutor {
             }
             // 形如: META-INF/winter/abc-1.0.0_jar/
             String nonSuffixLibName = libJarName.substring(0, libJarName.length() - 4);
-            String dirRelativePathForLib = Constant.MANIFEST_FILE + nonSuffixLibName + "_jar" + Constant.LINUX_FILE_SEPARATOR;
-            String dirAbsolutePathForLib = this.targetRootDir + File.separator + Constant.MANIFEST_FILE + nonSuffixLibName + "_jar" + File.separator;
+            String dirRelativePathForLib = Constant.DEFAULT_ENCRYPTED_CLASSES_SAVE_DIR + nonSuffixLibName + "_jar" + Constant.LINUX_FILE_SEPARATOR;
+            String dirAbsolutePathForLib = this.targetRootDir + File.separator + Constant.DEFAULT_ENCRYPTED_CLASSES_SAVE_DIR + nonSuffixLibName + "_jar" + File.separator;
     
             /*
              * my-project依赖的lib包本身可以是被class-winter混淆后的,但是这个lib包依赖的lib包不能是被class-winter混淆后
@@ -366,7 +369,7 @@ public class EncryptExecutor {
                 String[] libClassesArr = libChecklist.split(",");
                 byte[] libClazzByte;
                 for (String nonSuffixClassLongName : libClassesArr) {
-                    libClazzByte = IOUtil.readFileFromWorkbenchRoot(lib, Constant.MANIFEST_FILE + nonSuffixClassLongName);
+                    libClazzByte = IOUtil.readFileFromWorkbenchRoot(lib, Constant.DEFAULT_ENCRYPTED_CLASSES_SAVE_DIR + nonSuffixClassLongName);
                     IOUtil.toFile(libClazzByte, new File(dirAbsolutePathForLib, nonSuffixClassLongName), true);
                 }
             }

+ 2 - 1
class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/MixTest.java

@@ -27,7 +27,8 @@ public class MixTest {
                 //(必须)-> 加密spring-boot可执行jar包
 //                .originJarOrWar(projectRootDir + Constant.LINUX_FILE_SEPARATOR + "boot-jar.jar")
                 // 加密普通jar包
-                 .originJarOrWar(projectRootDir + "normal-jar.jar")
+//                 .originJarOrWar(projectRootDir + "normal-jar.jar")
+                 .originJarOrWar(projectRootDir + "ssm-0.0.1-SNAPSHOT.jar")
                 // 加密war包
                 // .originJarOrWar(projectRootDir + "war-project.war")
                 

BIN
class-winter-core/src/test/resources/boot-jar.jar


BIN
class-winter-core/src/test/resources/normal-jar.jar


BIN
class-winter-core/src/test/resources/war-project.war