|
|
@@ -26,8 +26,9 @@ public class ProjectReactor {
|
|
|
private static final String ARTIFACT_ID = "VberAdminPlus";
|
|
|
private static final String VERSION = "V3";
|
|
|
private static final String ARTIFACT_ID_VERSION = ARTIFACT_ID + VERSION;
|
|
|
+ private static final String ARTIFACT_ID_SHORT = "vap3";
|
|
|
private static final String PACKAGE_NAME = "com.vber";
|
|
|
- private static final String MODULE_PREFIX = "vber-";
|
|
|
+ private static final String MODULE_PREFIX = "vber";
|
|
|
private static final String MODULE_ARTIFACT_ID_PREFIX = "<artifactId>" + MODULE_PREFIX;
|
|
|
private static final String MODULE_ID_PREFIX = "<module>" + MODULE_PREFIX;
|
|
|
private static final String TITLE = "VAP后台管理系统";
|
|
|
@@ -48,15 +49,15 @@ public class ProjectReactor {
|
|
|
* @param packageName 项目的包名,用于Java项目的包结构定义。
|
|
|
* @param title 项目的标题,可用于描述项目的名称或目的。
|
|
|
* @param projectDir 项目目录的路径,指定项目文件和资源所在的物理位置。
|
|
|
- * @param modulePrefix 项目模块前缀,如果为空则使用默认值"vber-"。用于构建模块名称。
|
|
|
+ * @param modulePrefix 项目模块前缀,如果为空则使用默认值"vber"。用于构建模块名称。
|
|
|
*/
|
|
|
- public static void build(@NotNull String groupId, @NotNull String artifactId, @NotNull String packageName, @NotNull String title, @NotNull String projectDir, String modulePrefix) {
|
|
|
+ public static void build(@NotNull String groupId, @NotNull String artifactId, @NotNull String packageName, @NotNull String title, @NotNull String projectDir, String modulePrefix, @NotNull String artifactIdShort) {
|
|
|
// 如果modulePrefix为空,则使用默认前缀
|
|
|
- modulePrefix = StrUtil.isEmpty(modulePrefix) ? "vber-" : modulePrefix;
|
|
|
- modulePrefix = modulePrefix.endsWith("-") ? modulePrefix : modulePrefix + "-";
|
|
|
+ modulePrefix = StrUtil.isEmpty(modulePrefix) ? "vber" : modulePrefix;
|
|
|
+ modulePrefix = modulePrefix.endsWith("-") ? modulePrefix.substring(0, modulePrefix.length() - 1) : modulePrefix;
|
|
|
// 确保projectDir以反斜杠结尾。
|
|
|
projectDir = projectDir.endsWith("\\") ? projectDir : projectDir + "\\";
|
|
|
- build(new ProjectInfo(groupId, artifactId, packageName, title, projectDir, modulePrefix));
|
|
|
+ build(new ProjectInfo(groupId, artifactId, artifactIdShort, packageName, title, projectDir, modulePrefix));
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -76,6 +77,7 @@ public class ProjectReactor {
|
|
|
// 使用项目信息中的值,如果为空则使用默认值
|
|
|
String groupId = StrUtil.isEmpty(projectInfo.getGroupId()) ? GROUP_ID : projectInfo.getGroupId();
|
|
|
String artifactId = StrUtil.isEmpty(projectInfo.getArtifactId()) ? ARTIFACT_ID : projectInfo.getArtifactId();
|
|
|
+ String artifactIdShort = StrUtil.isEmpty(projectInfo.getArtifactIdShort()) ? ARTIFACT_ID_SHORT : projectInfo.getArtifactIdShort();
|
|
|
String packageName = StrUtil.isEmpty(projectInfo.getPackageName()) ? PACKAGE_NAME : projectInfo.getPackageName();
|
|
|
String modulePrefix = StrUtil.isEmpty(projectInfo.getModulePrefix()) ? MODULE_PREFIX : projectInfo.getModulePrefix();
|
|
|
String moduleArtifactIdPrefix = "<artifactId>" + modulePrefix;
|
|
|
@@ -124,7 +126,7 @@ public class ProjectReactor {
|
|
|
return;
|
|
|
}
|
|
|
// 如果非白名单的文件类型,重写内容,在生成文件
|
|
|
- String content = replaceFileContent(file, groupId, artifactId, packageName, title, moduleArtifactIdPrefix, moduleIdPrefix);
|
|
|
+ String content = replaceFileContent(file, groupId, artifactId, artifactIdShort, packageName, title, moduleArtifactIdPrefix, moduleIdPrefix);
|
|
|
writeFile(file, content, oldProjectDir, projectDir, packageName, artifactId, modulePrefix, uiFile);
|
|
|
});
|
|
|
log.info("[重写完成]共耗时:{} 秒", (System.currentTimeMillis() - start) / 1000);
|
|
|
@@ -137,10 +139,12 @@ public class ProjectReactor {
|
|
|
.filter(file -> !file.getPath().contains(separator + "target" + separator)
|
|
|
&& !file.getPath().contains(separator + "node_modules" + separator)
|
|
|
&& !file.getPath().contains(separator + ".idea" + separator)
|
|
|
- && !file.getPath().contains(separator + ".git" + separator)
|
|
|
- && !file.getPath().contains(separator + "UI/dist" + separator)
|
|
|
- && !file.getPath().contains(separator + ".vscode" + separator)
|
|
|
&& !file.getPath().contains(separator + ".vs" + separator)
|
|
|
+ && !file.getPath().contains(separator + ".vscode" + separator)
|
|
|
+ && !file.getPath().contains(separator + ".visualstudio" + separator)
|
|
|
+ && !file.getPath().contains(separator + ".git" + separator)
|
|
|
+ && !file.getPath().contains(separator + ".data" + separator)
|
|
|
+ && !file.getPath().contains(separator + "UI" + separator + "dist" + separator)
|
|
|
&& !file.getPath().contains(separator + "vber" + separator + "logs" + separator)
|
|
|
&& !file.getPath().contains(separator + "vber" + separator + "profile" + separator)
|
|
|
&& !file.getPath().contains(separator + "com" + separator + "vber" + separator + "reactor" + separator)
|
|
|
@@ -161,7 +165,7 @@ public class ProjectReactor {
|
|
|
}
|
|
|
|
|
|
private static String replaceFileContent(File file, String groupIdNew,
|
|
|
- String artifactIdNew, String packageNameNew,
|
|
|
+ String artifactIdNew, String artifactIdShortNew, String packageNameNew,
|
|
|
String titleNew, String moduleArtifactIdPrefix, String moduleIdSuffix) {
|
|
|
String content = FileUtil.readString(file, StandardCharsets.UTF_8);
|
|
|
// 如果是白名单的文件类型,不进行重写
|
|
|
@@ -172,12 +176,14 @@ public class ProjectReactor {
|
|
|
// 执行文件内容都重写
|
|
|
return content.replaceAll(GROUP_ID, groupIdNew)
|
|
|
.replaceAll(PACKAGE_NAME, packageNameNew)
|
|
|
- .replaceAll(MODULE_ARTIFACT_ID_PREFIX, moduleArtifactIdPrefix)
|
|
|
+ .replaceAll(MODULE_ARTIFACT_ID_PREFIX + "-", moduleArtifactIdPrefix + "-")
|
|
|
+ .replaceAll(MODULE_ARTIFACT_ID_PREFIX + "_", moduleArtifactIdPrefix + "_")
|
|
|
+ .replaceAll(MODULE_ID_PREFIX, moduleIdSuffix)
|
|
|
+ .replaceAll(ARTIFACT_ID_SHORT, artifactIdShortNew)
|
|
|
.replaceAll(ARTIFACT_ID_VERSION, artifactIdNew) // 带版本的ARTIFACT_ID也替换成无版本的!
|
|
|
.replaceAll(ARTIFACT_ID, artifactIdNew) // 必须放在最后替换,因为 ARTIFACT_ID 太短!
|
|
|
.replaceAll(StrUtil.upperFirst(ARTIFACT_ID), StrUtil.upperFirst(artifactIdNew))
|
|
|
- .replaceAll(StrUtil.upperFirst(MODULE_ID_PREFIX), StrUtil.upperFirst(moduleIdSuffix))
|
|
|
- .replaceAll("permission: \"no_auth\" //NEW PROJECT", "permission: \"\"") //隐藏生成新项目按钮
|
|
|
+ .replaceAll("permission: \"no_auth\" //NEW PROJECT", "permission: \"---\"") //隐藏生成新项目按钮
|
|
|
.replaceAll(TITLE, titleNew);
|
|
|
}
|
|
|
|