diff --git a/initializer-backend/pom.xml b/initializer-backend/pom.xml
index ab8a33335ba0734eb06176e633acc485eccdb9cb..c67e18abb4cade87afb26636cb9221879dda8df4 100644
--- a/initializer-backend/pom.xml
+++ b/initializer-backend/pom.xml
@@ -33,22 +33,26 @@
org.apache.maven
maven-embedder
- 3.8.5
+ ${maven-embedder.version}
org.apache.maven
maven-compat
- 3.8.5
+ ${maven-embedder.version}
org.eclipse.aether
aether-connector-basic
- 1.1.0
+ ${aether.version}
org.eclipse.aether
aether-transport-http
- 1.1.0
+ ${aether.version}
+
+
+ org.eclipse.jgit
+ org.eclipse.jgit
diff --git a/initializer-backend/src/main/java/com/schbrain/archetype/initializer/runner/ArchetypeFetcher.java b/initializer-backend/src/main/java/com/schbrain/archetype/initializer/runner/ArchetypeFetcher.java
new file mode 100644
index 0000000000000000000000000000000000000000..e1e3a1d15d4b9056828b8cdafffb71ce59eecd61
--- /dev/null
+++ b/initializer-backend/src/main/java/com/schbrain/archetype/initializer/runner/ArchetypeFetcher.java
@@ -0,0 +1,43 @@
+package com.schbrain.archetype.initializer.runner;
+
+import cn.hutool.system.SystemUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.eclipse.jgit.api.CheckoutCommand;
+import org.eclipse.jgit.api.Git;
+import org.eclipse.jgit.api.errors.GitAPIException;
+import org.eclipse.jgit.lib.Ref;
+import org.eclipse.jgit.transport.TagOpt;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
+import org.springframework.stereotype.Component;
+
+import java.io.File;
+
+/**
+ * @author liaozan
+ * @since 2022/3/20
+ */
+@Slf4j
+@Component
+public class ArchetypeFetcher implements ApplicationRunner {
+
+ private static final String ARCHETYPE_REPO_URL = "http://gitlab.schbrain.com/gitlab/tools/schbrain-archetype.git";
+
+ @Override
+ public void run(ApplicationArguments args) throws GitAPIException {
+ String tempDir = SystemUtil.getUserInfo().getTempDir();
+ File archetypeTemplateDirectory = new File(tempDir, "archetype");
+ Git git = Git.cloneRepository()
+ .setTagOption(TagOpt.FETCH_TAGS)
+ .setNoCheckout(false)
+ .setDirectory(archetypeTemplateDirectory)
+ .setCloneSubmodules(false)
+ .setURI(ARCHETYPE_REPO_URL)
+ .setRemote("upstream")
+ .call();
+ CheckoutCommand checkoutCommand = git.checkout().setName("master").setCreateBranch(true);
+ Ref ref = checkoutCommand.call();
+ log.info("Success checkout archetype branch: {} of {}", ref.getName(), ARCHETYPE_REPO_URL);
+ }
+
+}
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index ce14612fd26a85149310eef99b45af66cc889b12..6797b5365d63607743b1cae8be10cefce24e6096 100644
--- a/pom.xml
+++ b/pom.xml
@@ -19,6 +19,8 @@
0.0.1-SNAPSHOT
1.12.1
+ 3.8.5
+ 1.1.0