From 4fb7f5a61ef940e91578c6e6d22d42249a49f2e2 Mon Sep 17 00:00:00 2001 From: liaozan <378024053@qq.com> Date: Sun, 20 Mar 2022 02:31:32 +0800 Subject: [PATCH] init --- initializer-backend/pom.xml | 24 +++++++ .../backend/config/WebConfiguration.java | 22 ++++++ .../controller/InitializerController.java | 22 ++++++ .../initializer/backend/maven/MavenUtils.java | 40 +++++++++++ .../backend/param/ArchetypeGenerateParam.java | 25 +++++++ .../src/main/resources/application.yaml | 8 ++- initializer-ui/.gitignore | 4 +- initializer-ui/pom.xml | 69 +++++++++++++++++++ .../src/components/BackendStarter.vue | 30 ++++---- initializer-ui/src/util/request.js | 16 +++++ initializer-ui/src/util/util.js | 12 ---- pom.xml | 16 +++++ 12 files changed, 259 insertions(+), 29 deletions(-) create mode 100644 initializer-backend/src/main/java/com/schbrain/archetype/initializer/backend/config/WebConfiguration.java create mode 100644 initializer-backend/src/main/java/com/schbrain/archetype/initializer/backend/controller/InitializerController.java create mode 100644 initializer-backend/src/main/java/com/schbrain/archetype/initializer/backend/maven/MavenUtils.java create mode 100644 initializer-backend/src/main/java/com/schbrain/archetype/initializer/backend/param/ArchetypeGenerateParam.java create mode 100644 initializer-ui/src/util/request.js delete mode 100644 initializer-ui/src/util/util.js diff --git a/initializer-backend/pom.xml b/initializer-backend/pom.xml index 172e6a9..4a095ca 100644 --- a/initializer-backend/pom.xml +++ b/initializer-backend/pom.xml @@ -14,6 +14,10 @@ initializer-backend + + com.schbrain.archetype + initializer-ui + com.schbrain.common web-common @@ -26,6 +30,26 @@ org.springframework.boot spring-boot-starter-web + + org.apache.maven + maven-embedder + 3.8.5 + + + org.apache.maven + maven-compat + 3.8.5 + + + org.eclipse.aether + aether-connector-basic + 1.1.0 + + + org.eclipse.aether + aether-transport-http + 1.1.0 + diff --git a/initializer-backend/src/main/java/com/schbrain/archetype/initializer/backend/config/WebConfiguration.java b/initializer-backend/src/main/java/com/schbrain/archetype/initializer/backend/config/WebConfiguration.java new file mode 100644 index 0000000..415ec38 --- /dev/null +++ b/initializer-backend/src/main/java/com/schbrain/archetype/initializer/backend/config/WebConfiguration.java @@ -0,0 +1,22 @@ +package com.schbrain.archetype.initializer.backend.config; + +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.CorsRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +/** + * @author liaozan + * @since 2022/3/20 + */ +@Configuration(proxyBeanMethods = false) +public class WebConfiguration implements WebMvcConfigurer { + + @Override + public void addCorsMappings(CorsRegistry registry) { + registry.addMapping("/**") + .allowedOrigins("*") + .allowedMethods("*") + .maxAge(3600); + } + +} \ No newline at end of file diff --git a/initializer-backend/src/main/java/com/schbrain/archetype/initializer/backend/controller/InitializerController.java b/initializer-backend/src/main/java/com/schbrain/archetype/initializer/backend/controller/InitializerController.java new file mode 100644 index 0000000..b388cba --- /dev/null +++ b/initializer-backend/src/main/java/com/schbrain/archetype/initializer/backend/controller/InitializerController.java @@ -0,0 +1,22 @@ +package com.schbrain.archetype.initializer.backend.controller; + +import com.schbrain.archetype.initializer.backend.maven.MavenUtils; +import com.schbrain.archetype.initializer.backend.param.ArchetypeGenerateParam; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +/** + * @author liaozan + * @since 2022/3/20 + */ +@RestController +public class InitializerController { + + @PostMapping("/archetype/generate") + public void generateArchetype(@RequestBody @Validated ArchetypeGenerateParam param) { + MavenUtils.generate(param.getGroup(), param.getArtifact()); + } + +} \ No newline at end of file diff --git a/initializer-backend/src/main/java/com/schbrain/archetype/initializer/backend/maven/MavenUtils.java b/initializer-backend/src/main/java/com/schbrain/archetype/initializer/backend/maven/MavenUtils.java new file mode 100644 index 0000000..41304d2 --- /dev/null +++ b/initializer-backend/src/main/java/com/schbrain/archetype/initializer/backend/maven/MavenUtils.java @@ -0,0 +1,40 @@ +package com.schbrain.archetype.initializer.backend.maven; + +import cn.hutool.core.io.FileUtil; +import lombok.extern.slf4j.Slf4j; +import org.apache.maven.cli.MavenCli; + +import java.io.File; + +/** + * @author liaozan + * @since 2022/3/20 + */ +@Slf4j +public class MavenUtils { + + public static void generate(String groupId, String artifactId) { + MavenCli cli = new MavenCli(); + System.getProperties().setProperty("maven.multiModuleProjectDirectory", "$M2_HOME"); + String tmpDirPath = FileUtil.getTmpDirPath(); + File archetype = new File(tmpDirPath, artifactId); + String[] args = getArgs(groupId, artifactId, archetype.getAbsolutePath()); + cli.doMain(args, null, System.out, System.err); + log.info("Generate archetype project at {}", archetype.getAbsolutePath()); + } + + @SuppressWarnings("SpellCheckingInspection") + private static String[] getArgs(String groupId, String artifactId, String outputDirectory) { + return new String[]{ + "-B", + "archetype:generate", + "-DarchetypeGroupId=com.schbrain.kp", + "-DarchetypeArtifactId=schbrain-archetype", + "-DarchetypeVersion=1.0-SNAPSHOT", + String.format("-DoutputDirectory=%s", outputDirectory), + String.format("-DgroupId=%s", groupId), + String.format("-DartifactId=%S", artifactId) + }; + } + +} \ No newline at end of file diff --git a/initializer-backend/src/main/java/com/schbrain/archetype/initializer/backend/param/ArchetypeGenerateParam.java b/initializer-backend/src/main/java/com/schbrain/archetype/initializer/backend/param/ArchetypeGenerateParam.java new file mode 100644 index 0000000..33aa4d6 --- /dev/null +++ b/initializer-backend/src/main/java/com/schbrain/archetype/initializer/backend/param/ArchetypeGenerateParam.java @@ -0,0 +1,25 @@ +package com.schbrain.archetype.initializer.backend.param; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @author liaozan + * @since 2022/3/20 + */ +@Data +public class ArchetypeGenerateParam { + + @NotBlank + private String projectName; + @NotBlank + private String gitlabUrl; + @NotBlank + private String group; + @NotBlank + private String artifact; + @NotBlank + private String packageName; + +} \ No newline at end of file diff --git a/initializer-backend/src/main/resources/application.yaml b/initializer-backend/src/main/resources/application.yaml index b0fe9b7..432f66c 100644 --- a/initializer-backend/src/main/resources/application.yaml +++ b/initializer-backend/src/main/resources/application.yaml @@ -2,4 +2,10 @@ spring: application: name: initializer-backend profiles: - active: dev \ No newline at end of file + active: dev + web: + resources: + add-mappings: true +server: + servlet: + context-path: /api \ No newline at end of file diff --git a/initializer-ui/.gitignore b/initializer-ui/.gitignore index 403adbc..226474b 100644 --- a/initializer-ui/.gitignore +++ b/initializer-ui/.gitignore @@ -1,7 +1,7 @@ .DS_Store node_modules /dist - +/node # local env files .env.local @@ -20,4 +20,4 @@ pnpm-debug.log* *.ntvs* *.njsproj *.sln -*.sw? +*.sw? \ No newline at end of file diff --git a/initializer-ui/pom.xml b/initializer-ui/pom.xml index 59013ce..7a68d3f 100644 --- a/initializer-ui/pom.xml +++ b/initializer-ui/pom.xml @@ -13,4 +13,73 @@ initializer-ui + + + + com.github.eirslett + frontend-maven-plugin + ${frontend-maven-plugin.version} + + + install node and npm + + install-node-and-npm + + + v17.7.1 + + + + + npm install + + npm + + + generate-resources + + + install + + + + + npm run build + + npm + + + run build + + + + + + maven-resources-plugin + + + copy-resources + package + + copy-resources + + + + + ${project.basedir}/dist + + **/*.* + + true + + + ${project.parent.basedir}/initializer-backend/target/classes/static + + + + + + + + \ No newline at end of file diff --git a/initializer-ui/src/components/BackendStarter.vue b/initializer-ui/src/components/BackendStarter.vue index 42e1d0c..bd85a38 100644 --- a/initializer-ui/src/components/BackendStarter.vue +++ b/initializer-ui/src/components/BackendStarter.vue @@ -2,7 +2,12 @@
- + + +
+ +
+
@@ -12,8 +17,8 @@
- - + +
@@ -21,35 +26,32 @@
-
-