diff --git a/initializer-backend/src/main/java/com/schbrain/archetype/initializer/maven/MavenUtils.java b/initializer-backend/src/main/java/com/schbrain/archetype/initializer/maven/MavenUtils.java index 39b85c08e868c993422dda1c1d9a69a59f82de42..8bcb79a34d635a9aea10f99eb7fb8de9a2ac93c8 100644 --- a/initializer-backend/src/main/java/com/schbrain/archetype/initializer/maven/MavenUtils.java +++ b/initializer-backend/src/main/java/com/schbrain/archetype/initializer/maven/MavenUtils.java @@ -26,6 +26,10 @@ public class MavenUtils { private static final File SETTINGS_FILE = new File(MavenCli.USER_MAVEN_CONFIGURATION_HOME, "settings.xml"); + static { + System.getProperties().setProperty(MULTIMODULE_PROJECT_DIRECTORY, "$M2_HOME"); + } + public static void install(String workDirectory) { log.info("Prepare to install archive of : {}", workDirectory); MavenCli mavenCli = new MavenCli(); @@ -45,8 +49,6 @@ public class MavenUtils { String[] args = getArchetypeGenerateArgs(param, settingsFile.getAbsolutePath(), outputDirectory); - System.getProperties().setProperty(MULTIMODULE_PROJECT_DIRECTORY, "$M2_HOME"); - mavenCli.doMain(args, null, System.out, System.err); log.info("Generate archetype project at {}", outputDirectory); 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 56753e0d63bec629989b90541796b1e5e97fb783..8d2bfe5d07c114e9a15eadf77a6451957dd5036c 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 @@ -1,5 +1,6 @@ package com.schbrain.archetype.initializer.runner; +import cn.hutool.core.io.FileUtil; import cn.hutool.system.SystemUtil; import com.schbrain.archetype.initializer.maven.MavenUtils; import lombok.extern.slf4j.Slf4j; @@ -26,8 +27,19 @@ public class ArchetypePreparer implements ApplicationRunner { @Override public void run(ApplicationArguments args) throws GitAPIException { + File archetypeTemplateDirectory = createArchetypeDirectory(); + checkoutArchetype(archetypeTemplateDirectory); + MavenUtils.install(archetypeTemplateDirectory.getAbsolutePath()); + } + + private File createArchetypeDirectory() { String tempDir = SystemUtil.getUserInfo().getTempDir(); File archetypeTemplateDirectory = new File(tempDir, "archetype"); + FileUtil.del(archetypeTemplateDirectory); + return archetypeTemplateDirectory; + } + + private void checkoutArchetype(File archetypeTemplateDirectory) throws GitAPIException { Git git = Git.cloneRepository() .setTagOption(TagOpt.FETCH_TAGS) .setNoCheckout(false) @@ -39,7 +51,6 @@ public class ArchetypePreparer implements ApplicationRunner { CheckoutCommand checkoutCommand = git.checkout().setName("archetype").setCreateBranch(true); Ref ref = checkoutCommand.call(); log.info("Success checkout archetype branch: {} of {}", ref.getName(), ARCHETYPE_REPO_URL); - MavenUtils.install(archetypeTemplateDirectory.getAbsolutePath()); } } \ No newline at end of file