From 50ff27b7c8a726b13107569863e3c4e65679ff66 Mon Sep 17 00:00:00 2001 From: Marius Bogoevici Date: Fri, 31 Jul 2015 12:45:09 -0400 Subject: [PATCH] Make local repo configurable --- .../boot/loader/ModuleJarLauncher.java | 1 + .../module/launcher/ModuleLauncher.java | 28 ++++++++++++++----- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/spring-cloud-stream-module-launcher/src/main/java/org/springframework/boot/loader/ModuleJarLauncher.java b/spring-cloud-stream-module-launcher/src/main/java/org/springframework/boot/loader/ModuleJarLauncher.java index 681f0f2ad..b3ae1f658 100644 --- a/spring-cloud-stream-module-launcher/src/main/java/org/springframework/boot/loader/ModuleJarLauncher.java +++ b/spring-cloud-stream-module-launcher/src/main/java/org/springframework/boot/loader/ModuleJarLauncher.java @@ -34,6 +34,7 @@ import org.springframework.util.ReflectionUtils; * public {@link #launch(String[])} method. * * @author Mark Fisher + * @author Marius Bogoevici */ public class ModuleJarLauncher extends ExecutableArchiveLauncher { diff --git a/spring-cloud-stream-module-launcher/src/main/java/org/springframework/cloud/stream/module/launcher/ModuleLauncher.java b/spring-cloud-stream-module-launcher/src/main/java/org/springframework/cloud/stream/module/launcher/ModuleLauncher.java index 0ea1f1c7d..31f0101dc 100644 --- a/spring-cloud-stream-module-launcher/src/main/java/org/springframework/cloud/stream/module/launcher/ModuleLauncher.java +++ b/spring-cloud-stream-module-launcher/src/main/java/org/springframework/cloud/stream/module/launcher/ModuleLauncher.java @@ -31,6 +31,7 @@ import org.springframework.cloud.stream.module.resolver.AetherModuleResolver; import org.springframework.cloud.stream.module.resolver.ModuleResolver; import org.springframework.core.io.Resource; import org.springframework.util.Assert; +import org.springframework.util.FileSystemUtils; import org.springframework.util.StringUtils; /** @@ -44,25 +45,30 @@ import org.springframework.util.StringUtils; * * @author Mark Fisher * @author Ilayaperumal Gopinathan + * @author Marius Bogoevici */ public class ModuleLauncher { - private static final String LOCAL_REPO = "/opt/spring/modules"; + // TODO ensure that this properly supports Windows too + private static final String DEFAULT_LOCAL_REPO = + System.getProperty("user.home") + File.separator + ".m2" + File.separator + "repository"; private static final String DEFAULT_EXTENSION = "jar"; private static final String DEFAULT_CLASSIFIER = "exec"; - private static final Pattern COORDINATES_PATTERN = Pattern.compile("([^: ]+):([^: ]+)(:([^: ]*)(:([^: ]+))?)?:([^: ]+)"); + private static final Pattern COORDINATES_PATTERN = + Pattern.compile("([^: ]+):([^: ]+)(:([^: ]*)(:([^: ]+))?)?:([^: ]+)"); private final ModuleResolver moduleResolver; - public ModuleLauncher() { - this(Collections.singletonMap("spring-cloud-stream-modules", "http://repo.spring.io/spring-cloud-stream-modules")); + public ModuleLauncher(String localRepository) { + this(localRepository, + Collections.singletonMap("spring-cloud-stream-modules", "http://repo.spring.io/spring-cloud-stream-modules")); } - public ModuleLauncher(Map remoteRepositories) { - this.moduleResolver = new AetherModuleResolver(new File(LOCAL_REPO), remoteRepositories); + public ModuleLauncher(String localRepository, Map remoteRepositories) { + this.moduleResolver = new AetherModuleResolver(new File(localRepository), remoteRepositories); } public void launch(String[] modules, String[] args) { @@ -111,7 +117,15 @@ public class ModuleLauncher { System.err.println("Either the 'modules' system property or 'MODULES' environment variable is required."); System.exit(1); } - ModuleLauncher launcher = new ModuleLauncher(); + + String localRepository = System.getProperty("local.repository"); + if (localRepository == null) { + localRepository = System.getenv("LOCAL_REPOSITORY"); + } + if (localRepository == null) { + localRepository = DEFAULT_LOCAL_REPO; + } + ModuleLauncher launcher = new ModuleLauncher(localRepository); launcher.launch(modules.split(","), args); } }