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