Răsfoiți Sursa

Merge branch 'master' into release-2.9.4

JustryDeng 1 an în urmă
părinte
comite
a82d4b4626
29 a modificat fișierele cu 73 adăugiri și 63 ștergeri
  1. 32 22
      README.md
  2. 1 1
      class-winter-core/pom.xml
  3. 4 4
      class-winter-core/src/main/java/winter/com/ideaaedi/classwinter/executor/EncryptExecutor.java
  4. 2 2
      class-winter-core/src/main/java/winter/com/ideaaedi/classwinter/util/Cache.java
  5. 1 1
      class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/AllTest.java
  6. 2 2
      class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/AlreadyProtectedLibs_Test.java
  7. 2 2
      class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/Debug_Test.java
  8. 1 1
      class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/EncryptArgParam_Test.java
  9. 2 2
      class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/ExcludePrefix_Test.java
  10. 1 1
      class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/FinalName_Test.java
  11. 1 1
      class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/IncludeLibs_Test.java
  12. 1 1
      class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/IncludePrefix_Test.java
  13. 3 3
      class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/JvmArgCheck_Test.java
  14. 2 2
      class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/OriginJarOrWar_Test.java
  15. 3 3
      class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/Password_Test.java
  16. 2 2
      class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/SupportFile_Test.java
  17. 3 3
      class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/Tips_Test.java
  18. 5 5
      class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/War_Test.java
  19. 1 1
      class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/Xml_Test.java
  20. BIN
      class-winter-core/src/test/resources/class-winter-core-2.8.5.jar
  21. BIN
      class-winter-core/src/test/resources/class-winter-core-2.8.6.jar
  22. BIN
      class-winter-core/src/test/resources/class-winter-core-2.8.9.jar
  23. BIN
      class-winter-core/src/test/resources/class-winter-core-2.9.4.jar
  24. BIN
      class-winter-core/src/test/resources/class-winter-core-enhance-2.8.5.jar
  25. BIN
      class-winter-core/src/test/resources/class-winter-core-enhance-2.8.6.jar
  26. BIN
      class-winter-core/src/test/resources/class-winter-core-enhance-2.8.9.jar
  27. 1 1
      class-winter-maven-plugin/pom.xml
  28. 2 2
      class-winter-maven-plugin/src/main/java/winter/com/ideaaedi/classwinter/plugin/ClassWinterPlugin.java
  29. 1 1
      pom.xml

+ 32 - 22
README.md

@@ -64,7 +64,7 @@
   <plugin>
       <groupId>com.idea-aedi</groupId>
       <artifactId>class-winter-maven-plugin</artifactId>
-      <version>2.9.3</version>
+      <version>2.9.4</version>
       <!-- 相关配置 -->
       <configuration>
           <!-- <finalName></finalName>-->
@@ -95,15 +95,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.9.3.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.9.4.jar) 主动加密</font>
 
   ```bash
-  java -jar class-winter-core-2.9.3.jar originJarOrWar=${要加密的项目.jar或.war包} includePrefix=${加密范围} [k3=v3 k4=v4 ...]
+  java -jar class-winter-core-2.9.4.jar originJarOrWar=${要加密的项目.jar或.war包} includePrefix=${加密范围} [k3=v3 k4=v4 ...]
   # 对于复杂的参数值,可以使用引号引起来
   # linux
-  java -jar class-winter-core-2.9.3.jar k1='v1' k2='v2'
+  java -jar class-winter-core-2.9.4.jar k1='v1' k2='v2'
   # windows
-  java -jar class-winter-core-2.9.3.jar k1="v1" k2="v2"
+  java -jar class-winter-core-2.9.4.jar k1="v1" k2="v2"
   ```
 
 ## <font  face="幼圆" color = "#3399EA" >加密参数</font>
@@ -328,8 +328,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.9.3.jar
-  # java -javaagent:/class-winter-core-2.9.3.jar -jar /your-project-encrypted.jar
+  # 也可以用class-winter-core-2.9.4.jar
+  # java -javaagent:/class-winter-core-2.9.4.jar -jar /your-project-encrypted.jar
   # 或者指定参数
   # java -javaagent:/your-project-encrypted.jar=debug=true,password=pwd12345 -jar /your-project-encrypted.jar
   # 参数可以引起来(linux)
@@ -345,9 +345,9 @@ linux示例:tips='请不要直接使用混淆后的jar/war'</td>
     编辑tomcat/bin/catalina.sh文件,在最上面加上
 
     ```bash
-    # 如果你有参数, 那么 -javaagent:/class-winter-core-2.9.3.jar=k1=v1,k2=v2
+    # 如果你有参数, 那么 -javaagent:/class-winter-core-2.9.4.jar=k1=v1,k2=v2
     # tomcat启动往往需要通过decryptProjectPathPrefix指定要解密的路径
-    CATALINA_OPTS="$CATALINA_OPTS -javaagent:/class-winter-core-2.9.3.jar=debug=true,decryptProjectPathPrefix=/usr/local/xxx/";
+    CATALINA_OPTS="$CATALINA_OPTS -javaagent:/class-winter-core-2.9.4.jar=debug=true,decryptProjectPathPrefix=/usr/local/xxx/";
     export CATALINA_OPTS;
     ```
   
@@ -356,9 +356,9 @@ linux示例:tips='请不要直接使用混淆后的jar/war'</td>
     在tomcat/bin目录下创建setenv.sh文件,并写上
   
     ```bash
-    # 如果你有参数, 那么 -javaagent:/class-winter-core-2.9.3.jar=k1=v1,k2=v2
+    # 如果你有参数, 那么 -javaagent:/class-winter-core-2.9.4.jar=k1=v1,k2=v2
     # tomcat启动往往需要通过decryptProjectPathPrefix指定要解密的路径
-    JAVA_OPTS="$JAVA_OPTS -javaagent:/class-winter-core-2.9.3.jar=debug=true,decryptProjectPathPrefix=/usr/local/xxx/";
+    JAVA_OPTS="$JAVA_OPTS -javaagent:/class-winter-core-2.9.4.jar=debug=true,decryptProjectPathPrefix=/usr/local/xxx/";
     export JAVA_OPTS;
     ```
 
@@ -367,9 +367,9 @@ linux示例:tips='请不要直接使用混淆后的jar/war'</td>
     编辑tomcat/bin/catalina.bat文件,在@echo off后加上catalina参数
   
     ```bash
-    rem 如果你有参数, 那么 -javaagent:D:/class-winter-core-2.9.3.jar=k1=v1,k2=v2
+    rem 如果你有参数, 那么 -javaagent:D:/class-winter-core-2.9.4.jar=k1=v1,k2=v2
     rem tomcat启动往往需要通过decryptProjectPathPrefix指定要解密的路径
-    set CATALINA_OPTS="-javaagent:D:/class-winter-core-2.9.3.jar=decryptProjectPathPrefix=/D:/tmp/"
+    set CATALINA_OPTS="-javaagent:D:/class-winter-core-2.9.4.jar=decryptProjectPathPrefix=/D:/tmp/"
     ```
   
   - windows方式二
@@ -377,9 +377,9 @@ linux示例:tips='请不要直接使用混淆后的jar/war'</td>
     在tomcat/bin目录下创建setenv.bat文件,并写上
   
     ```bash
-    rem 如果你有参数, 那么 -javaagent:D:/class-winter-core-2.9.3.jar=k1=v1,k2=v2
+    rem 如果你有参数, 那么 -javaagent:D:/class-winter-core-2.9.4.jar=k1=v1,k2=v2
     rem tomcat启动往往需要通过decryptProjectPathPrefix指定要解密的路径
-    set JAVA_OPTS="-javaagent:D:/class-winter-core-2.9.3.jar=decryptProjectPathPrefix=/D:/tmp/"
+    set JAVA_OPTS="-javaagent:D:/class-winter-core-2.9.4.jar=decryptProjectPathPrefix=/D:/tmp/"
     ```
   
 - #### <font  face="幼圆" color = "#86CA5E" >IDE解密(启动)</font>
@@ -490,7 +490,7 @@ linux示例:tips='请不要直接使用混淆后的jar/war'</td>
       <parent>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-parent</artifactId>
-          <version>2.9.3</version>
+          <version>2.6.4</version>
           <relativePath/> <!-- lookup parent from repository -->
       </parent>
       <groupId>com.example</groupId>
@@ -611,23 +611,33 @@ linux示例:tips='请不要直接使用混淆后的jar/war'</td>
 
 > class-winter初始能力设计理念是,只做通用能力支持,如果没法做到通用,那就干脆不做,需要的话使用者自行扩展
 
-- <font  face="幼圆" color = "#F53B45">**1. 是否支持yml等配置文件加密?**</font>
+- <font  face="幼圆" color = "#F53B45">**1. 加密失败并伴有` Ignore clear-method-body for className [xxx], Cannot find 'yyy'`提示**</font>
+
+  - 原因:类`xxx`中使用到了类`yyy`,但是被加密包中不存在`yyy`类
+
+  - 解决方案1:在`xxx`中引入`yyy类`(或引入`yyy所在包`)
+
+  - 解决方案2:通过加密参数supportFile指定`yyy`所在包为加密辅助包
+
+    注:使用supportFile时,尽量控制指定范围,如果指定的范围太大(如无脑指定整个依赖仓库),引入的相关包太多,可能导致一些意料外的加密问题。如:[issues I9VTG9](https://gitee.com/JustryDeng/class-winter/issues/I9VTG9)
+
+- <font  face="幼圆" color = "#F53B45">**2. 是否支持yml等配置文件加密?**</font>
 
   <font  face="幼圆" color = "#3CAA3C">**不支持。**</font>
 
   不同的框架加载配置文件的方式不一样,没法写一个通用的加密逻辑,需要的话自行根据所用技术框架自行实现
 
-- <font  face="幼圆" color = "#F53B45">**2. 是否支持对lib包里的xml加密?**</font>
+- <font  face="幼圆" color = "#F53B45">**3. 是否支持对lib包里的xml加密?**</font>
 
   <font  face="幼圆" color = "#3CAA3C">**不支持。**</font>
 
   首先实现起来相对麻烦,其次即便是(通用)加密也是伪加密。除非自己根据框架进行扩展进行定制加密
 
-- <font  face="幼圆" color = "#F53B45">**3. 部分版本spring-boot为啥加密后,启动时读取配置文件内容失败?**</font>
+- <font  face="幼圆" color = "#F53B45">**4. 部分版本spring-boot为啥加密后,启动时读取配置文件内容失败?**</font>
 
   <font  face="幼圆" color = "#3CAA3C">**配置文件使用.yaml或.properties无此问题;部分版本的spring-boot使用.yml配置文件可能出现部分配置读取失败。**</font>
 
-- <font  face="幼圆" color = "#F53B45">**4. 启动时明明按要求指定了JVM参数,为啥还是提示Miss jvm arg?**</font>
+- <font  face="幼圆" color = "#F53B45">**5. 启动时明明按要求指定了JVM参数,为啥还是提示Miss jvm arg?**</font>
 
   <font  face="幼圆" color = "#3CAA3C">**JVM参数位置不对,要放在-jar xxx.jar之前**</font>
 
@@ -638,13 +648,13 @@ linux示例:tips='请不要直接使用混淆后的jar/war'</td>
   java -javaagent:cc-encrypted.jar -XX:+DisableAttachMechanism -jar cc-encrypted.jar 
   ```
 
-- <font  face="幼圆" color = "#F53B45">**5. class-winter是否支持对类名、字段名、方法名等进行混淆?**</font>
+- <font  face="幼圆" color = "#F53B45">**6. class-winter是否支持对类名、字段名、方法名等进行混淆?**</font>
 
   <font  face="幼圆" color = "#3CAA3C">**不支持。**</font>
 
   需要的话,可结合其它混淆工具(如:allatori等)一起加密,可参考enhance分支
 
-- <font  face="幼圆" color = "#F53B45">**6. includeLibs指定了要加密的lib包,为啥没生效?**</font>
+- <font  face="幼圆" color = "#F53B45">**7. includeLibs指定了要加密的lib包,为啥没生效?**</font>
 
   <font  face="幼圆" color = "#3CAA3C">**首先检查是否正确配置了includeLibs,然后检查includePrefix匹配范围是否包含lib中的class**</font>
 

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

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

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

@@ -65,12 +65,12 @@ public class EncryptExecutor {
     /**
      * 调用EncryptExecutor进行加密的“人”是否是maven插件
      */
-    public static boolean invokerIsPlugin = false;
+    public boolean invokerIsPlugin = false;
     
     /** 本项目(class-winter)需要打包的代码 */
-    public static final Set<String> CLASS_WINTER_FILES = new HashSet<>();
+    public final Set<String> CLASS_WINTER_FILES = new HashSet<>();
     
-    static {
+    {
         CLASS_WINTER_FILES.add(Cache.class.getName().replace(".", "/") + Constant.CLASS_SUFFIX);
         CLASS_WINTER_FILES.add(JustryDeng.class.getName().replace(".", "/") + Constant.CLASS_SUFFIX);
         CLASS_WINTER_FILES.add(ClassWinterException.class.getName().replace(".", "/") + Constant.CLASS_SUFFIX);
@@ -404,7 +404,7 @@ public class EncryptExecutor {
      *            步骤描述
      */
     private void showProcess(String completedStep, String lastStep, String stepDesc) {
-        if (EncryptExecutor.invokerIsPlugin) {
+        if (invokerIsPlugin) {
             Logger.simpleInfo(completedStep + "/" + lastStep + "\t" + stepDesc  + " completed.");
         } else {
             Logger.info(completedStep + "/" + lastStep + "\t" + stepDesc  + " completed.");

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

@@ -30,10 +30,10 @@ public final class Cache {
      *     <li>value-密码</li>
      * </ul>
      */
-    public static volatile Map<String, char[]> passwordCacheForEncrypt = new ConcurrentHashMap<>(8);
+    public static Map<String, char[]> passwordCacheForEncrypt = new ConcurrentHashMap<>(8);
     
     /** 本项目加密时的印章 (key-projectPath; value-印章) */
-    public static volatile Map<String, String>  sealCache =  new ConcurrentHashMap<>(8);
+    public static Map<String, String>  sealCache =  new ConcurrentHashMap<>(8);
     
     /** 本项目获取到的第一个印章 */
     public static volatile String  firstSealCache;

+ 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.9.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.9.4.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.9.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.9.4.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.9.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.9.4.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.9.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.9.4.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.9.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.9.4.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 + " debug=" + true

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

@@ -70,7 +70,7 @@ public class EncryptArgParam_Test {
             includePrefix= sb.toString();
         }
         
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.9.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.9.4.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.9.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.9.4.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.*.DbSecurityBeanUtil";
     
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.9.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.9.4.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.9.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.9.4.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-.*.RELEASE.jar,guava-28.2-jre.jar";
     
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.9.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.9.4.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.*.util";
     
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.9.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.9.4.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.9.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.9.4.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.9.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.9.4.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.9.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.9.4.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.9.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.9.4.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.9.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.9.4.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.9.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.9.4.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.9.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.9.4.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.9.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.9.4.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.9.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.9.4.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.9.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.9.4.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.9.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.9.4.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 ;
@@ -55,8 +55,8 @@ public class Tips_Test {
         String tips = "[潘嘎之交] 潘: 你别怪潘叔说话比较直白, 网络上的东西都是虚拟的, 你把握不住, 孩子! 因为这里的水很深...";
     
         // 如果tips值由一些特殊字符(如空格等)的话,可以用windows双引号(linux单引号)引起来。
-        // java -jar class-winter-core-2.9.3.jar originJarOrWar=/boot-jar.jar includePrefix=com tips="[潘嘎之交] 潘: 你别怪潘叔说话比较直白, 网络上的东西都是虚拟的, 你把握不住, 孩子! 因为这里的水很深..."
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.9.3.jar"
+        // java -jar class-winter-core-2.9.4.jar originJarOrWar=/boot-jar.jar includePrefix=com tips="[潘嘎之交] 潘: 你别怪潘叔说话比较直白, 网络上的东西都是虚拟的, 你把握不住, 孩子! 因为这里的水很深..."
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.9.4.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.9.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.9.4.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.9.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.9.4.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.9.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.9.4.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.9.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.9.4.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.9.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.9.4.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.9.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.9.4.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 + " includeXmlPrefix=" + includeXmlPrefix

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


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


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


BIN
class-winter-core/src/test/resources/class-winter-core-2.9.3.jar → class-winter-core/src/test/resources/class-winter-core-2.9.4.jar


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


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


BIN
class-winter-core/src/test/resources/class-winter-core-enhance-2.8.9.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.9.3</version>
+        <version>2.9.4</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

+ 2 - 2
class-winter-maven-plugin/src/main/java/winter/com/ideaaedi/classwinter/plugin/ClassWinterPlugin.java

@@ -21,7 +21,7 @@ import java.io.File;
  * @author JustryDeng
  */
 @SuppressWarnings("unused")
-@Mojo(name = "class-winter", defaultPhase = LifecyclePhase.PACKAGE)
+@Mojo(name = "class-winter", defaultPhase = LifecyclePhase.PACKAGE, threadSafe = true)
 public class ClassWinterPlugin extends AbstractMojo {
 
     @Parameter(defaultValue = "${project}", readonly = true, required = true)
@@ -122,7 +122,7 @@ public class ClassWinterPlugin extends AbstractMojo {
         Logger.debug("The encrypted executor generated based on your configuration is -> " + encryptExecutor);
         String encryptedJarOrWar;
         try {
-            EncryptExecutor.invokerIsPlugin = true;
+            encryptExecutor.invokerIsPlugin = true;
             encryptedJarOrWar = encryptExecutor.process();
             Logger.simpleInfo("The absolute path of the obfuscated jar is [" + encryptedJarOrWar + "]");
         } catch (Exception e) {

+ 1 - 1
pom.xml

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