Commit 3e77061c40894861ec8da2294cc1142bfd346901
Merge branch 'feature/project-reactor' of https://gitee.com/zhijiantianya/ruoyi-…
…vue-pro into feature/project-reactor
Showing
1 changed file
with
20 additions
and
14 deletions
yudao-server/src/test/java/cn/iocoder/yudao/ProjectReactor.java
| @@ -8,10 +8,12 @@ import org.apache.commons.io.FileUtils; | @@ -8,10 +8,12 @@ import org.apache.commons.io.FileUtils; | ||
| 8 | import java.io.File; | 8 | import java.io.File; |
| 9 | import java.nio.charset.StandardCharsets; | 9 | import java.nio.charset.StandardCharsets; |
| 10 | import java.util.Collection; | 10 | import java.util.Collection; |
| 11 | +import java.util.regex.Matcher; | ||
| 12 | +import java.util.stream.Collectors; | ||
| 11 | 13 | ||
| 12 | /** | 14 | /** |
| 13 | * 项目修改器,一键替换 Maven 的 groupId、artifactId,项目的 package 等 | 15 | * 项目修改器,一键替换 Maven 的 groupId、artifactId,项目的 package 等 |
| 14 | - * | 16 | + * <p> |
| 15 | * 通过修改 groupIdNew、artifactIdNew、projectBaseDirNew 三个变量 | 17 | * 通过修改 groupIdNew、artifactIdNew、projectBaseDirNew 三个变量 |
| 16 | * | 18 | * |
| 17 | * @author 芋道源码 | 19 | * @author 芋道源码 |
| @@ -25,6 +27,7 @@ public class ProjectReactor { | @@ -25,6 +27,7 @@ public class ProjectReactor { | ||
| 25 | private static final String TITLE = "芋道管理系统"; | 27 | private static final String TITLE = "芋道管理系统"; |
| 26 | 28 | ||
| 27 | public static void main(String[] args) { | 29 | public static void main(String[] args) { |
| 30 | + long start = System.currentTimeMillis(); | ||
| 28 | String projectBaseDir = getProjectBaseDir(); | 31 | String projectBaseDir = getProjectBaseDir(); |
| 29 | 32 | ||
| 30 | // ========== 配置,需要你手动修改 ========== | 33 | // ========== 配置,需要你手动修改 ========== |
| @@ -33,7 +36,7 @@ public class ProjectReactor { | @@ -33,7 +36,7 @@ public class ProjectReactor { | ||
| 33 | String packageNameNew = "cn.start.pp"; | 36 | String packageNameNew = "cn.start.pp"; |
| 34 | String titleNew = "土豆管理系统"; | 37 | String titleNew = "土豆管理系统"; |
| 35 | String projectBaseDirNew = projectBaseDir + "-new"; // 一键改名后,“新”项目所在的目录 | 38 | String projectBaseDirNew = projectBaseDir + "-new"; // 一键改名后,“新”项目所在的目录 |
| 36 | - // ========== ========== | 39 | + log.info("[main][新项目路径地址]projectBaseDirNew: " + projectBaseDirNew); |
| 37 | 40 | ||
| 38 | // 获得需要复制的文件 | 41 | // 获得需要复制的文件 |
| 39 | log.info("[main][开始获得需要重写的文件]"); | 42 | log.info("[main][开始获得需要重写的文件]"); |
| @@ -44,22 +47,26 @@ public class ProjectReactor { | @@ -44,22 +47,26 @@ public class ProjectReactor { | ||
| 44 | String content = replaceFileContent(file, groupIdNew, artifactIdNew, packageNameNew, titleNew); | 47 | String content = replaceFileContent(file, groupIdNew, artifactIdNew, packageNameNew, titleNew); |
| 45 | writeFile(file, content, projectBaseDir, projectBaseDirNew, packageNameNew, artifactIdNew); | 48 | writeFile(file, content, projectBaseDir, projectBaseDirNew, packageNameNew, artifactIdNew); |
| 46 | }); | 49 | }); |
| 47 | - log.info("[main][重写完成]"); | 50 | + log.info("[main][重写完成]共耗时:{} 秒", (System.currentTimeMillis() - start) / 1000); |
| 48 | } | 51 | } |
| 49 | 52 | ||
| 50 | private static String getProjectBaseDir() { | 53 | private static String getProjectBaseDir() { |
| 51 | - // noinspection ConstantConditions | ||
| 52 | - return StrUtil.subBefore(ProjectReactor.class.getClassLoader().getResource("").getFile(), | ||
| 53 | - "/yudao-server", false); | 54 | + return StrUtil.subBefore(new File(ProjectReactor.class.getClassLoader().getResource(File.separator).getFile()).getPath(), File.separator + "yudao-server", false); |
| 54 | } | 55 | } |
| 55 | 56 | ||
| 56 | private static Collection<File> listFiles(String projectBaseDir) { | 57 | private static Collection<File> listFiles(String projectBaseDir) { |
| 57 | Collection<File> files = FileUtils.listFiles(new File(projectBaseDir), null, true); | 58 | Collection<File> files = FileUtils.listFiles(new File(projectBaseDir), null, true); |
| 58 | - files.removeIf(file -> file.getPath().contains("/target/")); | ||
| 59 | - files.removeIf(file -> file.getPath().contains("/node_modules/")); | ||
| 60 | - files.removeIf(file -> file.getPath().contains("/.idea/")); // 移除 IDEA 自身的文件 | ||
| 61 | - files.removeIf(file -> file.getPath().contains("/.git/")); // 移除 Git 自身的文件 | ||
| 62 | - files.removeIf(file -> file.getPath().contains("/dist/")); // 移除 Node 编译出来的 | 59 | + // 移除 IDEA Git GitHub 自身的文件; Node 编译出来的文件 |
| 60 | + files = files.stream() | ||
| 61 | + .filter(file -> !file.getPath().contains(File.separator + "target" + File.separator) | ||
| 62 | + && !file.getPath().contains(File.separator + "node_modules" + File.separator) | ||
| 63 | + && !file.getPath().contains(File.separator + ".idea" + File.separator) | ||
| 64 | + && !file.getPath().contains(File.separator + ".git" + File.separator) | ||
| 65 | + && !file.getPath().contains(File.separator + ".github" + File.separator) | ||
| 66 | + && !file.getPath().contains(File.separator + "dist" + File.separator) | ||
| 67 | + && !file.getPath().contains(".iml") | ||
| 68 | + && !file.getPath().contains(".html.gz")) | ||
| 69 | + .collect(Collectors.toList()); | ||
| 63 | return files; | 70 | return files; |
| 64 | } | 71 | } |
| 65 | 72 | ||
| @@ -77,11 +84,10 @@ public class ProjectReactor { | @@ -77,11 +84,10 @@ public class ProjectReactor { | ||
| 77 | private static void writeFile(File file, String fileContent, String projectBaseDir, | 84 | private static void writeFile(File file, String fileContent, String projectBaseDir, |
| 78 | String projectBaseDirNew, String packageNameNew, String artifactIdNew) { | 85 | String projectBaseDirNew, String packageNameNew, String artifactIdNew) { |
| 79 | String newPath = file.getPath().replace(projectBaseDir, projectBaseDirNew) // 新目录 | 86 | String newPath = file.getPath().replace(projectBaseDir, projectBaseDirNew) // 新目录 |
| 80 | - .replace(PACKAGE_NAME.replaceAll("\\.", File.separator), | ||
| 81 | - packageNameNew.replaceAll("\\.", File.separator)) | 87 | + .replace(PACKAGE_NAME.replaceAll("\\.", Matcher.quoteReplacement(File.separator)), |
| 88 | + packageNameNew.replaceAll("\\.", Matcher.quoteReplacement(File.separator))) | ||
| 82 | .replace(ARTIFACT_ID, artifactIdNew) // | 89 | .replace(ARTIFACT_ID, artifactIdNew) // |
| 83 | .replaceAll(StrUtil.upperFirst(ARTIFACT_ID), StrUtil.upperFirst(artifactIdNew)); | 90 | .replaceAll(StrUtil.upperFirst(ARTIFACT_ID), StrUtil.upperFirst(artifactIdNew)); |
| 84 | FileUtil.writeUtf8String(fileContent, newPath); | 91 | FileUtil.writeUtf8String(fileContent, newPath); |
| 85 | } | 92 | } |
| 86 | - | ||
| 87 | } | 93 | } |