Browse Source

bugfix => 对直接启动spring-boot可执行war的支持

JustryDeng 3 years ago
parent
commit
ed2af95df0

+ 5 - 13
class-winter-core/src/main/java/winter/com/ideaaedi/classwinter/Forward.java

@@ -22,6 +22,11 @@ public class Forward {
      * 那么args的内容形如["k1=v1", "k2=v2", "k3=v3"]
      * 那么args的内容形如["k1=v1", "k2=v2", "k3=v3"]
      */
      */
     public static void main(String[] args) {
     public static void main(String[] args) {
+        /// main test
+        ///args =new String[]{
+        ///        "originJarOrWar=C:/Users/Administrator/Desktop/test.war",
+        ///        "includePrefix=com.ideaaedi.test"
+        ///};
         // 解析参数
         // 解析参数
         String originJarOrWar = parseValueByPrefixFromTail("originJarOrWar=", args);
         String originJarOrWar = parseValueByPrefixFromTail("originJarOrWar=", args);
         String includePrefix = parseValueByPrefixFromTail("includePrefix=", args);
         String includePrefix = parseValueByPrefixFromTail("includePrefix=", args);
@@ -108,17 +113,4 @@ public class Forward {
         }
         }
         return null;
         return null;
     }
     }
-    
-    
-    // /**
-    //  * test
-    //  */
-    // public static void main(String[] args) {
-    //     mai1n(
-    //             new String[]{
-    //                     "originJarOrWar=C:/Users/Administrator/Desktop/test.war",
-    //                     "includePrefix=com.ideaaedi.test"
-    //             }
-    //     );
-    // }
 }
 }

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

@@ -687,8 +687,9 @@ public class EncryptExecutor {
                 if (this.originIsJar) {
                 if (this.originIsJar) {
                     JarUtil.unJarWar(classWinterProjectRootDir, targetRootDir, false, CLASS_WINTER_FILES);
                     JarUtil.unJarWar(classWinterProjectRootDir, targetRootDir, false, CLASS_WINTER_FILES);
                 } else {
                 } else {
-                    byte[] bytes = IOUtil.toBytes(classWinterProjectRootDirFile);
-                    IOUtil.toFile(bytes, new File(this.targetLibDir, classWinterProjectRootDirFile.getName()), true);
+                    JarUtil.unJarWar(classWinterProjectRootDir,
+                            targetRootDir + Constant.LINUX_FILE_SEPARATOR + Constant.CLASS_WINTER_SOURCE_WAR_DIR,
+                            false, CLASS_WINTER_FILES);
                 }
                 }
             } else {
             } else {
                 throw new ClassWinterException("Execute method addClassWinterAgent() fail. Cannot parse classWinterProjectRootDir [" + classWinterProjectRootDir + "].");
                 throw new ClassWinterException("Execute method addClassWinterAgent() fail. Cannot parse classWinterProjectRootDir [" + classWinterProjectRootDir + "].");

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

@@ -103,6 +103,11 @@ public interface Constant {
      */
      */
     String POM_XML_ROOT = "META-INF/maven";
     String POM_XML_ROOT = "META-INF/maven";
     
     
+    /**
+     * war包下,存放class-winter代码的位置
+     */
+    String CLASS_WINTER_SOURCE_WAR_DIR = "WEB-INF/classes";
+    
     /**
     /**
      * 汇总记录项目中那些本身就已经被class-winter混淆了的lib的checklist
      * 汇总记录项目中那些本身就已经被class-winter混淆了的lib的checklist
      */
      */

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

@@ -15,11 +15,11 @@ public class War_Test {
     public static void main(String[] args) {
     public static void main(String[] args) {
         // 杀下进程(以保证端口没有被占用)
         // 杀下进程(以保证端口没有被占用)
         BashUtil.killProcessByPorts("8080");
         BashUtil.killProcessByPorts("8080");
-//        test0();
+        test0();
 //        test1();
 //        test1();
 //        test2();
 //        test2();
 //        test3();
 //        test3();
-        test4();
+//        test4();
     }
     }
     
     
     /**
     /**

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