Просмотр исходного кода

Merge branch 'master' into release-2.7.3

JustryDeng 3 лет назад
Родитель
Сommit
71aa15dc44
24 измененных файлов с 131 добавлено и 80 удалено
  1. 29 18
      README.md
  2. 1 1
      class-winter-core/pom.xml
  3. 64 27
      class-winter-core/src/main/java/winter/com/ideaaedi/classwinter/executor/EncryptExecutor.java
  4. 5 0
      class-winter-core/src/main/java/winter/com/ideaaedi/classwinter/util/Constant.java
  5. 1 1
      class-winter-core/src/main/java/winter/com/ideaaedi/classwinter/util/ExceptionUtil.java
  6. 0 2
      class-winter-core/src/main/java/winter/com/ideaaedi/classwinter/util/JavaagentCmdArgs.java
  7. 1 1
      class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/AllTest.java
  8. 2 2
      class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/AlreadyProtectedLibs_Test.java
  9. 2 2
      class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/Debug_Test.java
  10. 2 2
      class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/ExcludePrefix_Test.java
  11. 1 1
      class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/FinalName_Test.java
  12. 1 1
      class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/IncludeLibs_Test.java
  13. 1 1
      class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/IncludePrefix_Test.java
  14. 3 3
      class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/JvmArgCheck_Test.java
  15. 2 2
      class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/OriginJarOrWar_Test.java
  16. 3 3
      class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/Password_Test.java
  17. 2 2
      class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/SupportFile_Test.java
  18. 3 3
      class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/Tips_Test.java
  19. 5 5
      class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/War_Test.java
  20. 1 1
      class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/Xml_Test.java
  21. BIN
      class-winter-core/src/test/resources/class-winter-core-2.7.3.jar
  22. BIN
      class-winter-core/src/test/resources/class-winter-core-enhance-2.7.2.jar
  23. 1 1
      class-winter-maven-plugin/pom.xml
  24. 1 1
      pom.xml

+ 29 - 18
README.md

@@ -7,6 +7,7 @@
   - [加密参数](#加密参数)
   - [解密(启动)](#解密启动)
   - [解密参数](#解密参数)
+  - [对class-winter本身进行加密](#对class-winter本身进行加密)
   - [巧用loader.path](#巧用loaderpath)
 
 ---
@@ -19,13 +20,16 @@
 
 - 支持jdk8语法的环境即可
 
-  注:tomcat版本不能低于8,否则可能报错
+  > **<font face="幼圆"  color = "#F53B45">本人构建class-winter时,用的jdk版本为:`1.8.0_281`</font>**
 
+  注:tomcat版本不能低于8(部分小版本低的tomcat8可能也不行),否则可能报错
+  
   ```bash
   org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost...
   ```
 
   注:如果有兼容低版本jdk的需求,可以自己下载master分支代码,进行对应修改
+  
 
 ## <font  face="幼圆" color = "#3399EA" >功能与特性</font>
 
@@ -45,7 +49,7 @@
   <plugin>
       <groupId>com.idea-aedi</groupId>
       <artifactId>class-winter-maven-plugin</artifactId>
-      <version>2.7.2</version>
+      <version>2.7.3</version>
       <!-- 相关配置 -->
       <configuration>
           <!-- <finalName></finalName>-->
@@ -76,15 +80,15 @@
   ```
   注:不必担心信息泄漏问题,使用此方式生成混淆的jar包时,会擦除pom.xml中关于class-winter-plugin的信息。
   
-- #### <font face="幼圆" ><font face="幼圆"  color = "#86CA5E">**方式二**</font>:通过 [**class-winter-core.jar**](https://gitee.com/JustryDeng/class-winter/raw/master/class-winter-core/src/test/resources/class-winter-core-2.7.2.jar) 主动加密</font>
+- #### <font face="幼圆" ><font face="幼圆"  color = "#86CA5E">**方式二**</font>:通过 [**class-winter-core.jar**](https://gitee.com/JustryDeng/class-winter/raw/master/class-winter-core/src/test/resources/class-winter-core-2.7.3.jar) 主动加密</font>
 
   ```bash
-  java -jar class-winter-core-2.7.2.jar originJarOrWar=${要加密的项目.jar或.war包} includePrefix=${加密范围} [k3=v3 k4=v4 ...]
+  java -jar class-winter-core-2.7.3.jar originJarOrWar=${要加密的项目.jar或.war包} includePrefix=${加密范围} [k3=v3 k4=v4 ...]
   # 对于复杂的参数值,可以使用引号引起来
   # linux
-  java -jar class-winter-core-2.7.2.jar k1='v1' k2='v2'
+  java -jar class-winter-core-2.7.3.jar k1='v1' k2='v2'
   # windows
-  java -jar class-winter-core-2.7.20.jar k1="v1" k2="v2"
+  java -jar class-winter-core-2.7.3.jar k1="v1" k2="v2"
   ```
 
 ## <font  face="幼圆" color = "#3399EA" >加密参数</font>
@@ -220,7 +224,7 @@ alreadyProtectedLibs=a.jar:pwd1,b.jar:pwd2</td>
     <td>否</td>
     <td>指定一个加密辅助jar文件(或jar文件所在的目录)
     <br/>
-注:当为目录时,该目录(含子孙目录)下的所有jar都会被采集作为辅助文件。
+注:当为目录时,该目录(含子孙目录)下的所有jar都会被采集作为辅助文件。
 <br/>
 注:主要用于解决因ClassNotFound导致的加密失败问题。</td>
     <td>supportFile=/abc.jar
@@ -269,8 +273,8 @@ linux示例:tips='请不要直接使用混淆后的jar/war'</td>
   ```bash
   # 假设your-project-encrypted.jar是由class-winter加密后的包,那么你可以这么启动
   java -javaagent:/your-project-encrypted.jar -jar /your-project-encrypted.jar
-  # 也可以用class-winter-core-2.7.2.jar
-  # java -javaagent:/class-winter-core-2.7.2.jar -jar /your-project-encrypted.jar
+  # 也可以用class-winter-core-2.7.3.jar
+  # java -javaagent:/class-winter-core-2.7.3.jar -jar /your-project-encrypted.jar
   # 或者指定参数
   # java -javaagent:/your-project-encrypted.jar=debug=true,password=pwd12345 -jar /your-project-encrypted.jar
   # 参数可以引起来(linux)
@@ -286,8 +290,8 @@ linux示例:tips='请不要直接使用混淆后的jar/war'</td>
     编辑tomcat/bin/catalina.sh文件,在最上面加上
 
     ```bash
-    # 如果你有参数, 那么 -javaagent:/class-winter-core-2.7.2.jar=k1=v1,k2=v2
-    CATALINA_OPTS="$CATALINA_OPTS -javaagent:/class-winter-core-2.7.2.jar=debug=true";
+    # 如果你有参数, 那么 -javaagent:/class-winter-core-2.7.3.jar=k1=v1,k2=v2
+    CATALINA_OPTS="$CATALINA_OPTS -javaagent:/class-winter-core-2.7.3.jar=debug=true";
     export CATALINA_OPTS;
     ```
 
@@ -296,8 +300,8 @@ linux示例:tips='请不要直接使用混淆后的jar/war'</td>
     在tomcat/bin目录下创建setenv.sh文件,并写上
 
     ```bash
-    # 如果你有参数, 那么 -javaagent:/class-winter-core-2.7.2.jar=k1=v1,k2=v2
-    JAVA_OPTS="$JAVA_OPTS -javaagent:/class-winter-core-2.7.2.jar=debug=true";
+    # 如果你有参数, 那么 -javaagent:/class-winter-core-2.7.3.jar=k1=v1,k2=v2
+    JAVA_OPTS="$JAVA_OPTS -javaagent:/class-winter-core-2.7.3.jar=debug=true";
     export JAVA_OPTS;
     ```
 
@@ -306,8 +310,8 @@ linux示例:tips='请不要直接使用混淆后的jar/war'</td>
     编辑tomcat/bin/catalina.bat文件,在@echo off后加上catalina参数
 
     ```bash
-    rem 如果你有参数, 那么 -javaagent:D:/class-winter-core-2.7.2.jar=k1=v1,k2=v2
-    set CATALINA_OPTS="-javaagent:D:/class-winter-core-2.7.2.jar"
+    rem 如果你有参数, 那么 -javaagent:D:/class-winter-core-2.7.3.jar=k1=v1,k2=v2
+    set CATALINA_OPTS="-javaagent:D:/class-winter-core-2.7.3.jar"
     ```
 
   - windows方式二
@@ -315,8 +319,8 @@ linux示例:tips='请不要直接使用混淆后的jar/war'</td>
     在tomcat/bin目录下创建setenv.bat文件,并写上
 
     ```bash
-    rem 如果你有参数, 那么 -javaagent:D:/class-winter-core-2.7.2.jar=k1=v1,k2=v2
-    set JAVA_OPTS="-javaagent:D:/class-winter-core-2.7.2.jar"
+    rem 如果你有参数, 那么 -javaagent:D:/class-winter-core-2.7.3.jar=k1=v1,k2=v2
+    set JAVA_OPTS="-javaagent:D:/class-winter-core-2.7.3.jar"
     ```
 
 - #### <font  face="幼圆" color = "#86CA5E" >IDE解密(启动)</font>
@@ -382,6 +386,13 @@ linux示例:tips='请不要直接使用混淆后的jar/war'</td>
   </tr>
 </table>
 
+## <font  face="幼圆" color = "#3399EA" >对class-winter本身进行加密</font>
+
+> 感谢小伙伴[Mango](https://gitee.com/mango_ye)对class-winter的优质反馈
+
+- 背景说明:我们利用class-winter混淆项目时,项目是被混淆了,但是class-winter本身还是明文的,这就留下了一些安全隐患(即:那些不指定密码的混淆,可能会被反向破解)
+- 增强支持:我们可以对class-winter本身进行加密,你可以切换至`enhance-*`分支,在首页下载被混淆的class-winter进行测试,或者clone代码,install后进行测试
+- <font face="幼圆"  color = "#F53B45">**声明**</font>:因为在`enhance-*`分支里对class-winter本身进行加密时用到了名义上的收费工具allatori(实际上有破解版之类的),所以`enhance-*`分支的代码,本人并未发布至maven官方仓库
 
 
 ## <font  face="幼圆" color = "#3399EA" >巧用loader.path</font>
@@ -411,7 +422,7 @@ linux示例:tips='请不要直接使用混淆后的jar/war'</td>
         <parent>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-parent</artifactId>
-            <version>2.7.2</version>
+            <version>2.7.3</version>
             <relativePath/> <!-- lookup parent from repository -->
         </parent>
         <groupId>com.example</groupId>

+ 1 - 1
class-winter-core/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <groupId>com.idea-aedi</groupId>
         <artifactId>class-winter</artifactId>
-        <version>2.7.2</version>
+        <version>2.7.3</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

+ 64 - 27
class-winter-core/src/main/java/winter/com/ideaaedi/classwinter/executor/EncryptExecutor.java

@@ -76,7 +76,6 @@ public class EncryptExecutor {
         CLASS_WINTER_FILES.add(IOUtil.class.getName().replace(".", "/") + Constant.CLASS_SUFFIX);
         CLASS_WINTER_FILES.add(JarUtil.class.getName().replace(".", "/") + Constant.CLASS_SUFFIX);
         CLASS_WINTER_FILES.add(JavaagentCmdArgs.class.getName().replace(".", "/") + Constant.CLASS_SUFFIX);
-        CLASS_WINTER_FILES.add(JavassistUtil.class.getName().replace(".", "/") + Constant.CLASS_SUFFIX);
         CLASS_WINTER_FILES.add(Logger.class.getName().replace(".", "/") + Constant.CLASS_SUFFIX);
         CLASS_WINTER_FILES.add(Pair.class.getName().replace(".", "/") + Constant.CLASS_SUFFIX);
         CLASS_WINTER_FILES.add(PathUtil.class.getName().replace(".", "/") + Constant.CLASS_SUFFIX);
@@ -109,7 +108,6 @@ public class EncryptExecutor {
      */
     private final String password;
     
-    
     /**
      * 要加密的xml文件的zipEntry名前缀(如:)
      */
@@ -124,7 +122,6 @@ public class EncryptExecutor {
      * xml中要清除的(根节点的)子节点名称
      */
     private final Set<String> toCleanXmlChildElementNameSet;
-
     
     /**
      * 要加密的类的全类名前缀(也可以精确匹配)
@@ -251,65 +248,66 @@ public class EncryptExecutor {
         
         // step0. 解压jar到jarRootDir下
         String lastStep = "step13";
-        showProcess("step00", lastStep, "un-jar-war");
         List<String> filePathList = JarUtil.unJarWar(originJarOrWar, targetRootDir);
+        showProcess("step00", lastStep, "un-jar-war");
     
-        showProcess("step01", lastStep, "clean-xml-files");
+        // step1. 混淆xml
         File targetRootDirFile = new File(targetRootDir);
         if (includeXmlPrefixSet != null && includeXmlPrefixSet.size() > 0) {
             cleanXmlFiles(filePathList, targetRootDirFile);
         }
+        showProcess("step01", lastStep, "clean-xml-files");
     
-        // step1. jar中的某些lib可能也需要加密,这里先(将那些需要加密的lib)进行解压,(解压到对应的临时目录,以便后面进行加密处理)
-        showProcess("step02", lastStep, "un-lib-jar");
+        // step2. jar中的某些lib可能也需要加密,这里先(将那些需要加密的lib)进行解压,(解压到对应的临时目录,以便后面进行加密处理)
         unLibJar();
+        showProcess("step02", lastStep, "un-lib-jar");
         
-        // step2. 找到需要加密混淆的class文件
-        showProcess("step03", lastStep, "filter-classes");
+        // step3. 找到需要加密混淆的class文件
         List<File> allFiles = IOUtil.listSubFile(targetRootDirFile, 1);
         List<File> allNeedEncryptedClassFileList = filterClasses(allFiles);
+        showProcess("step03", lastStep, "filter-classes");
         
-        showProcess("step04", lastStep, "encrypt-classes");
-        // step3.1. 根据原.class文件,生成加密后的.class文件,并存至Constant.ENCRYPTED_CLASSES_SAVE_DIR
+        // step4.1. 根据原.class文件,生成加密后的.class文件,并存至Constant.ENCRYPTED_CLASSES_SAVE_DIR
         List<String> allAlreadyEncryptedClassFileList = encryptClasses(allNeedEncryptedClassFileList, new File(targetRootDir,
                 Constant.DEFAULT_ENCRYPTED_CLASSES_SAVE_DIR));
-        // step3.2. 生成记录已加密class的全类名的清单文件
+        // step4.2. 生成记录已加密class的全类名的清单文件
         generateChecklistFile(allAlreadyEncryptedClassFileList);
+        showProcess("step04", lastStep, "encrypt-classes");
         
-        // step4. 记录印章(在解密时,可通过 checklist + 印章 判断一个class是否是被class-winter加密过)
-        showProcess("step05", lastStep, "record-seal");
+        // step5. 记录印章(在解密时,可通过 checklist + 印章 判断一个class是否是被class-winter加密过)
         generateSealFile();
+        showProcess("step05", lastStep, "record-seal");
 
-        // step5. 设置启动jar包时需要检查的jvm参数项
-        showProcess("step06", lastStep, "setting-jvm-arg-check-items");
+        // step6. 设置启动jar包时需要检查的jvm参数项
         settingJvmArgCheckItems();
+        showProcess("step06", lastStep, "setting-jvm-arg-check-items");
 
-        // step6. 混淆原.class文件(即:清空方法体)
+        // step7. 混淆原.class文件(即:清空方法体)
         clearClassMethod(allNeedEncryptedClassFileList);
         showProcess("step07", lastStep, "clear-class-method");
     
-        // step7. 清除META-INF/maven下pom.xml中关于class-winter-plugin的相关信息
+        // step8. 清除META-INF/maven下pom.xml中关于class-winter-plugin的相关信息
         clearWinterPluginInfo();
         showProcess("step08", lastStep, "clear-winter-plugin-info");
         
-        // step8. 添加class-winter的用于javaagent解密的代码
+        // step9. 添加class-winter的用于javaagent解密的代码
         addClassWinterAgent();
         showProcess("step09", lastStep, "add-class-winter-agent");
         
-        // step9. 汇总那些在本次加密前本身就已经是被class-winter混淆的lib的相关信息到当前项目中
+        // step10. 汇总那些在本次加密前本身就已经是被class-winter混淆的lib的相关信息到当前项目中
         collectAlreadyProtectedLibInfo();
         showProcess("step10", lastStep, "collect-already-protected-lib-info");
         
-        // step10. 与step1项对应,将临时目录还原为原来的lib(此时得到的lib是加密后的)
+        // step11. 与step2项对应,将临时目录还原为原来的lib(此时得到的lib是加密后的)
         doLibJar();
         showProcess("step11", lastStep, "do-lib-jar");
         
-        // step11. 压缩targetRootDir目录为绝对文件路径名为generatedJarWar的jar(or war)包
+        // step12. 压缩targetRootDir目录为绝对文件路径名为generatedJarWar的jar(or war)包
         String generatedJarWar = generateJarWarPath(this.originIsJar);
         JarUtil.doJarWar(targetRootDir, generatedJarWar, new SimpleFileOrderSupport(filePathList));
         showProcess("step12", lastStep, "generate-jar-war-path");
         
-        // step12. 删除临时目录
+        // step13. 删除临时目录
         IOUtil.delete(targetRootDirFile);
         showProcess(lastStep, lastStep, "delete-tmp-dir");
         return generatedJarWar;
@@ -688,7 +686,7 @@ public class EncryptExecutor {
             }
             content = sb.toString();
         }
-        Logger.debug(EncryptExecutor.class, "SeDtting jvmArgCheckItems -> " + content);
+        Logger.debug(EncryptExecutor.class, "Setting jvmArgCheckItems -> " + content);
         byte[] encryptedBytes = EncryptUtil.encrypt(content.getBytes(StandardCharsets.UTF_8), obtainPassword());
         IOUtil.toFile(Base64.getEncoder().encode(encryptedBytes), new File(targetRootDir, Constant.JVM_ARG_CHECK_FILE), true);
     }
@@ -812,17 +810,56 @@ public class EncryptExecutor {
         if (depth <= 0) {
             return null;
         }
+        
+        // 从异常链中直接寻找NotFoundException
         Throwable cause = e.getCause();
+        NotFoundException notFoundException = null;
         for (int i = 0; i < depth; i++) {
             if (cause instanceof NotFoundException) {
-                return (NotFoundException)cause;
+                notFoundException = (NotFoundException)cause;
+                break;
             }
             if (cause == null) {
-                return null;
+                break;
             }
             cause = cause.getCause();
         }
-        return null;
+        if (notFoundException != null) {
+            return notFoundException;
+        }
+        
+        // 从异常信息中寻找NotFoundException
+        cause = e;
+        depth = depth + 1;
+        for (int i = 0; i < depth; i++) {
+            if (cause == null) {
+                break;
+            }
+            notFoundException = findFromMessage(cause.getMessage());
+            if (notFoundException != null) {
+                break;
+            }
+            cause = cause.getCause();
+        }
+        return notFoundException;
+    }
+    
+    /**
+     * 从异常信息中寻找NotFoundException
+     *
+     * @param message 异常信息
+     *
+     * @return NotFoundException异常(null-则表示未找到)
+     */
+    private static NotFoundException findFromMessage(String message) {
+        if (message == null) {
+            return null;
+        }
+        if (!message.contains(Constant.NOT_FOUND_EXCEPTION_FLAG)) {
+            return null;
+        }
+        String targetClassName = message.substring(message.indexOf(Constant.NOT_FOUND_EXCEPTION_FLAG) + (Constant.NOT_FOUND_EXCEPTION_FLAG).length()).trim();
+        return new NotFoundException(targetClassName);
     }
     
     /**

+ 5 - 0
class-winter-core/src/main/java/winter/com/ideaaedi/classwinter/util/Constant.java

@@ -229,4 +229,9 @@ public interface Constant {
      * PREMAIN_CLASS
      */
     String PREMAIN_CLASS = "Premain-Class: ";
+    
+    /**
+     * NotFoundException标识
+     */
+    String NOT_FOUND_EXCEPTION_FLAG = "javassist.NotFoundException:";
 }

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

@@ -22,7 +22,7 @@ public class ExceptionUtil {
      *            异常
      * @return 该异常的错误堆栈信息
      */
-    public static String getStackTraceMessage(Exception e) {
+    public static String getStackTraceMessage(Throwable e) {
         StringWriter sw = null;
         PrintWriter pw = null;
         try {

+ 0 - 2
class-winter-core/src/main/java/winter/com/ideaaedi/classwinter/util/JavaagentCmdArgs.java

@@ -15,8 +15,6 @@ import java.util.List;
  *     java -javaagent:xxx.jar="k1=v1,k2=v2" -jar xxx.jar
  *     java -javaagent:xxx.jar=k1=v1,k2=v2 -jar xxx.jar
  *
- *  注: 这里k...只支持本类中的属性password和debug。
- *
  * @author {@link JustryDeng}
  * @since 2021/6/1 22:15:28
  */

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

@@ -77,7 +77,7 @@ public class AllTest {
         String alreadyProtectedLibs = "encrypted-lib-have-pwd-1.0.0.jar:qwer123~";
         String jvmArgCheck = "-XX:+DisableAttachMechanism";
         String debug = "true";
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.2.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 + " excludePrefix=" + excludePrefix

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

@@ -67,7 +67,7 @@ public class AlreadyProtectedLibs_Test {
         String originJarOrWar = projectRootDir + Constant.LINUX_FILE_SEPARATOR + "my-project-with-encrypted-lib-no-pwd.jar";
         String includePrefix = "non-exist";
         String alreadyProtectedLibs = "encrypted-lib-no-pwd-1.0.0.jar";
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.2.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 + " alreadyProtectedLibs=" + alreadyProtectedLibs
@@ -110,7 +110,7 @@ public class AlreadyProtectedLibs_Test {
         String includePrefix = "non-exist";
         String alreadyProtectedLibs = "encrypted-lib-have-pwd-1.0.0.jar:qwer123~";
     
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.2.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 + " alreadyProtectedLibs=" + alreadyProtectedLibs

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

@@ -36,7 +36,7 @@ public class Debug_Test {
         String originJarOrWar = projectRootDir + "boot-jar.jar";
         String includePrefix = "com";
         
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.2.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 ;
@@ -64,7 +64,7 @@ public class Debug_Test {
         String originJarOrWar = projectRootDir + "boot-jar.jar";
         String includePrefix = "com";
     
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.2.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 + " debug=" + true

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

@@ -38,7 +38,7 @@ public class ExcludePrefix_Test {
         String originJarOrWar = projectRootDir + "boot-jar.jar";
         String includePrefix = "com.aspire.ssm.util.AesEncryptDecryptUtil,com.aspire.ssm.util.DbSecurityBeanUtil";
         
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.2.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 + " debug=" + true
@@ -72,7 +72,7 @@ public class ExcludePrefix_Test {
         String includePrefix = "com.aspire.ssm.util.AesEncryptDecryptUtil,com.aspire.ssm.util.DbSecurityBeanUtil";
         String excludePrefix = "com.aspire.ssm.util.DbSecurityBeanUtil";
     
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.2.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 + " excludePrefix=" + excludePrefix

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

@@ -23,7 +23,7 @@ public class FinalName_Test {
         String includePrefix = "com";
         String finalName = "YiYaKaKa";
     
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.2.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 + " finalName=" + finalName

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

@@ -42,7 +42,7 @@ public class IncludeLibs_Test {
         String includePrefix = "org.springframework.aop.target.dynamic,com.google.common.xml";
         String includeLibs = "spring-aop-5.1.8.RELEASE.jar,guava-28.2-jre.jar";
     
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.2.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 + " includeLibs=" + includeLibs

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

@@ -39,7 +39,7 @@ public class IncludePrefix_Test {
         String originJarOrWar = projectRootDir + "boot-jar.jar";
         String includePrefix = "com.aspire.ssm.util";
     
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.2.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 + " debug=" + true

+ 3 - 3
class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/JvmArgCheck_Test.java

@@ -33,7 +33,7 @@ public class JvmArgCheck_Test {
     
         String jvmArg = "-XX:+DisableAttachMechanism,-Xms1024M";
         
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.2.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 + " jvmArgCheck=" + jvmArg
@@ -65,7 +65,7 @@ public class JvmArgCheck_Test {
     
         String jvmArg = "-XX:+DisableAttachMechanism,-Xms1024M";
         
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.2.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 + " jvmArgCheck=" + jvmArg
@@ -97,7 +97,7 @@ public class JvmArgCheck_Test {
     
         String jvmArg = "-XX:+DisableAttachMechanism";
         
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.2.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 + " jvmArgCheck=" + jvmArg

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

@@ -32,7 +32,7 @@ public class OriginJarOrWar_Test {
         String originJarOrWar = projectRootDir + "non-exist.jar";
         String includePrefix = "com.aspire.ssm.util";
     
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.2.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 + " debug=" + true
@@ -58,7 +58,7 @@ public class OriginJarOrWar_Test {
         String originJarOrWar = projectRootDir + "boot-jar.jar";
         String includePrefix = "com.aspire.ssm.util";
     
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.2.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 + " debug=" + true

+ 3 - 3
class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/Password_Test.java

@@ -34,7 +34,7 @@ public class Password_Test {
         String includePrefix = "com";
         String password = "pwd123";
     
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.2.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 + " password=" + password
@@ -65,7 +65,7 @@ public class Password_Test {
         String includePrefix = "com";
         String password = "pwd123";
     
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.2.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 + " password=" + password
@@ -97,7 +97,7 @@ public class Password_Test {
         String includePrefix = "com";
         String password = "pwd123";
     
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.2.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 + " password=" + password

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

@@ -42,7 +42,7 @@ public class SupportFile_Test {
         String originJarOrWar = projectRootDir + "normal-jar.jar";
         String includePrefix = "com";
         
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.2.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 ;
@@ -62,7 +62,7 @@ public class SupportFile_Test {
         String includePrefix = "com";
         String supportFile = projectRootDir + "help";
         
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.2.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 + " supportFile=" + supportFile

+ 3 - 3
class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/Tips_Test.java

@@ -32,7 +32,7 @@ public class Tips_Test {
         String originJarOrWar = projectRootDir + "boot-jar.jar";
         String includePrefix = "com";
     
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.2.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 ;
@@ -55,8 +55,8 @@ public class Tips_Test {
         String tips = "[潘嘎之交] 潘: 你别怪潘叔说话比较直白, 网络上的东西都是虚拟的, 你把握不住, 孩子! 因为这里的水很深...";
     
         // 如果tips值由一些特殊字符(如空格等)的话,可以用windows双引号(linux单引号)引起来。
-        // java -jar class-winter-core-2.7.2.jar originJarOrWar=/boot-jar.jar includePrefix=com tips="[潘嘎之交] 潘: 你别怪潘叔说话比较直白, 网络上的东西都是虚拟的, 你把握不住, 孩子! 因为这里的水很深..."
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.2.jar"
+        // java -jar class-winter-core-2.7.3.jar originJarOrWar=/boot-jar.jar includePrefix=com tips="[潘嘎之交] 潘: 你别怪潘叔说话比较直白, 网络上的东西都是虚拟的, 你把握不住, 孩子! 因为这里的水很深..."
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 + " tips=" + (BashUtil.IS_WINDOWS ? "\"".concat(tips).concat("\"") : "'".concat(tips).concat("'"));

+ 5 - 5
class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/War_Test.java

@@ -34,7 +34,7 @@ public class War_Test {
         String originJarOrWar = projectRootDir + "war-project.war";
         String includePrefix = "com";
     
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.2.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 ;
@@ -62,7 +62,7 @@ public class War_Test {
         String includePrefix = "com";
         String password = "123456";
     
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.2.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 + " password=" + password
@@ -93,7 +93,7 @@ public class War_Test {
         String alreadyProtectedLibs = "encrypted-lib-no-pwd.jar";
         String password = "oop857857";
     
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.2.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 + " alreadyProtectedLibs=" + alreadyProtectedLibs
@@ -124,7 +124,7 @@ public class War_Test {
         String alreadyProtectedLibs = "encrypted-lib-have-pwd.jar:qwer123~";
         String password = "yiyakaka";
         
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.2.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 + " alreadyProtectedLibs=" + alreadyProtectedLibs
@@ -160,7 +160,7 @@ public class War_Test {
         String alreadyProtectedLibs = "encrypted-lib-have-pwd.jar:qwer123~";
         String debug = "true";
     
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.2.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 + " excludePrefix=" + excludePrefix

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

@@ -31,7 +31,7 @@ public class Xml_Test {
         String toCleanXmlChildElementName = "select";
         
         
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.2.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 + " includeXmlPrefix=" + includeXmlPrefix

BIN
class-winter-core/src/test/resources/class-winter-core-2.7.2.jar → class-winter-core/src/test/resources/class-winter-core-2.7.3.jar


BIN
class-winter-core/src/test/resources/class-winter-core-enhance-2.7.2.jar


+ 1 - 1
class-winter-maven-plugin/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <groupId>com.idea-aedi</groupId>
         <artifactId>class-winter</artifactId>
-        <version>2.7.2</version>
+        <version>2.7.3</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

+ 1 - 1
pom.xml

@@ -9,7 +9,7 @@
     </modules>
     <groupId>com.idea-aedi</groupId>
     <artifactId>class-winter</artifactId>
-    <version>2.7.2</version>
+    <version>2.7.3</version>
 
     <!-- 配置项目的基础信息 -->
     <name>class-winter</name>