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 @@
-
-
+
+
@@ -21,35 +26,32 @@
-
-