From 40385ccedef9543324fedd484d14e2413a95b035 Mon Sep 17 00:00:00 2001 From: liaozan <378024053@qq.com> Date: Sun, 20 Mar 2022 14:12:19 +0800 Subject: [PATCH] chore: update maven settings --- .../initializer/maven/MavenUtils.java | 32 +++++++++++++++++-- 1 file changed, 29 insertions(+), 3 deletions(-) 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 d5f5fb0..96c54b1 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 @@ -6,8 +6,13 @@ import com.schbrain.archetype.initializer.param.ArchetypeGenerateParam; import com.schbrain.common.util.JacksonUtils; import lombok.extern.slf4j.Slf4j; import org.apache.maven.cli.MavenCli; +import org.apache.maven.settings.Mirror; +import org.apache.maven.settings.Settings; +import org.apache.maven.settings.io.DefaultSettingsWriter; import java.io.File; +import java.io.IOException; +import java.util.Collections; import static org.apache.maven.cli.MavenCli.MULTIMODULE_PROJECT_DIRECTORY; @@ -18,7 +23,9 @@ import static org.apache.maven.cli.MavenCli.MULTIMODULE_PROJECT_DIRECTORY; @Slf4j public class MavenUtils { - public static File generate(ArchetypeGenerateParam param) { + private static final File SETTINGS_FILE = new File(MavenCli.USER_MAVEN_CONFIGURATION_HOME, "settings.xml"); + + public static File generate(ArchetypeGenerateParam param) throws IOException { log.info("Prepare to generate archetype project: {}", JacksonUtils.toJsonString(param, true)); MavenCli mavenCli = new MavenCli(); @@ -26,15 +33,33 @@ public class MavenUtils { File archetype = getArchetypeDirectory(param.getArtifact()); String outputDirectory = archetype.getAbsolutePath(); - String[] args = getArgs(param, outputDirectory); + File settingsFile = getSettingsFile(); + + String[] args = getArgs(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); return ZipUtil.zip(archetype); } + private static File getSettingsFile() throws IOException { + if (SETTINGS_FILE.exists()) { + return SETTINGS_FILE; + } + Settings settings = new Settings(); + + Mirror mirror = new Mirror(); + mirror.setUrl("https://maven.aliyun.com/repository/public"); + settings.addMirror(mirror); + + DefaultSettingsWriter settingsWriter = new DefaultSettingsWriter(); + settingsWriter.write(SETTINGS_FILE, Collections.emptyMap(), settings); + return SETTINGS_FILE; + } + private static File getArchetypeDirectory(String artifactId) { String tmpDirPath = FileUtil.getTmpDirPath(); File archetype = new File(tmpDirPath, artifactId); @@ -44,13 +69,14 @@ public class MavenUtils { } @SuppressWarnings("SpellCheckingInspection") - private static String[] getArgs(ArchetypeGenerateParam param, String outputDirectory) { + private static String[] getArgs(ArchetypeGenerateParam param, String settingsFile, String outputDirectory) { return new String[]{ "-B", "archetype:generate", "-DarchetypeGroupId=com.schbrain.kp", "-DarchetypeArtifactId=schbrain-archetype", "-DarchetypeVersion=1.0-SNAPSHOT", + String.format("-gs=%s", settingsFile), String.format("-DoutputDirectory=%s", outputDirectory), String.format("-DgroupId=%s", param.getGroup()), String.format("-DartifactId=%s", param.getArtifact()), -- GitLab