From 24e3f5e8f1de17ca83e8e6a60bb233f27ed56946 Mon Sep 17 00:00:00 2001 From: liaozan <378024053@qq.com> Date: Wed, 3 Aug 2022 23:55:48 +0800 Subject: [PATCH] feat: make the warm up logic run after init --- .../listener/ProjectWarmUpListener.java | 37 ------------------- .../initializer/runner/ArchetypePreparer.java | 23 +++++++++++- 2 files changed, 22 insertions(+), 38 deletions(-) delete mode 100644 initializer-backend/src/main/java/com/schbrain/archetype/initializer/listener/ProjectWarmUpListener.java diff --git a/initializer-backend/src/main/java/com/schbrain/archetype/initializer/listener/ProjectWarmUpListener.java b/initializer-backend/src/main/java/com/schbrain/archetype/initializer/listener/ProjectWarmUpListener.java deleted file mode 100644 index 5afcb00..0000000 --- a/initializer-backend/src/main/java/com/schbrain/archetype/initializer/listener/ProjectWarmUpListener.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.schbrain.archetype.initializer.listener; - -import com.schbrain.archetype.initializer.maven.MavenUtils; -import com.schbrain.archetype.initializer.param.ArchetypeGenerateParam; -import com.schbrain.common.util.EnvUtils; -import lombok.SneakyThrows; -import org.springframework.boot.context.event.ApplicationStartedEvent; -import org.springframework.context.ApplicationListener; -import org.springframework.stereotype.Component; - -import java.util.concurrent.Executor; -import java.util.concurrent.Executors; - -/** - * @author liaozan - * @since 2022/3/20 - */ -@Component -public class ProjectWarmUpListener implements ApplicationListener { - - private final Executor executor = Executors.newSingleThreadExecutor(); - - @SneakyThrows - @Override - public void onApplicationEvent(ApplicationStartedEvent event) { - if (!EnvUtils.runningOnCloudPlatform(event.getApplicationContext().getEnvironment())) { - return; - } - executor.execute(() -> { - ArchetypeGenerateParam mockParam = new ArchetypeGenerateParam(); - mockParam.setGroupId("com.schbrain"); - mockParam.setArtifactId("schbrain-init"); - MavenUtils.generate(mockParam); - }); - } - -} \ No newline at end of file diff --git a/initializer-backend/src/main/java/com/schbrain/archetype/initializer/runner/ArchetypePreparer.java b/initializer-backend/src/main/java/com/schbrain/archetype/initializer/runner/ArchetypePreparer.java index 69ffbfd..d0ad406 100644 --- a/initializer-backend/src/main/java/com/schbrain/archetype/initializer/runner/ArchetypePreparer.java +++ b/initializer-backend/src/main/java/com/schbrain/archetype/initializer/runner/ArchetypePreparer.java @@ -4,7 +4,9 @@ import cn.hutool.core.io.FileUtil; import cn.hutool.system.SystemUtil; import com.schbrain.archetype.initializer.config.properties.ArchetypeProperties; import com.schbrain.archetype.initializer.maven.MavenUtils; +import com.schbrain.archetype.initializer.param.ArchetypeGenerateParam; import com.schbrain.common.exception.BaseException; +import com.schbrain.common.util.EnvUtils; import lombok.extern.slf4j.Slf4j; import org.eclipse.jgit.api.Git; import org.eclipse.jgit.api.errors.GitAPIException; @@ -13,6 +15,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.core.env.Environment; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.stereotype.Component; import java.io.File; @@ -26,12 +30,19 @@ import java.io.File; @EnableConfigurationProperties(ArchetypeProperties.class) public class ArchetypePreparer implements ApplicationRunner { + @Autowired + private Environment environment; @Autowired private ArchetypeProperties archetypeProperties; + @Autowired + private ThreadPoolTaskExecutor taskExecutor; @Override public void run(ApplicationArguments args) { - installArchetype(); + taskExecutor.execute(() -> { + installArchetype(); + warmUpIfRequired(); + }); } public void installArchetype() { @@ -40,6 +51,16 @@ public class ArchetypePreparer implements ApplicationRunner { MavenUtils.install(archetypeTemplateDirectory.getAbsolutePath()); } + private void warmUpIfRequired() { + if (!EnvUtils.runningOnCloudPlatform(environment)) { + return; + } + ArchetypeGenerateParam mockParam = new ArchetypeGenerateParam(); + mockParam.setGroupId("com.schbrain"); + mockParam.setArtifactId("schbrain-init"); + MavenUtils.generate(mockParam); + } + private File createArchetypeDirectory() { String tempDir = SystemUtil.getUserInfo().getTempDir(); File archetypeTemplateDirectory = new File(tempDir, "archetype"); -- GitLab