diff --git a/spring-bootstrap-cli/src/main/java/org/springframework/bootstrap/cli/RunCommand.java b/spring-bootstrap-cli/src/main/java/org/springframework/bootstrap/cli/RunCommand.java index f5bc8e4739e..b38bdde5655 100644 --- a/spring-bootstrap-cli/src/main/java/org/springframework/bootstrap/cli/RunCommand.java +++ b/spring-bootstrap-cli/src/main/java/org/springframework/bootstrap/cli/RunCommand.java @@ -53,6 +53,8 @@ public class RunCommand extends OptionParsingCommand { private OptionSpec quietOption; + private OptionSpec localOption; + private BootstrapRunner runner; public RunCommand() { @@ -75,6 +77,8 @@ public class RunCommand extends OptionParsingCommand { OptionParser parser = new OptionParser(); this.watchOption = parser .accepts("watch", "Watch the specified file for changes"); + this.localOption = parser.accepts("local", + "Accumulate the dependencies in a local folder (./grapes)"); this.editOption = parser.acceptsAll(asList("edit", "e"), "Open the file with the default system editor"); this.noGuessImportsOption = parser.accepts("no-guess-imports", @@ -99,6 +103,9 @@ public class RunCommand extends OptionParsingCommand { BootstrapRunnerConfiguration configuration = new BootstrapRunnerConfigurationAdapter( options); + if (configuration.isLocal() && System.getProperty("grape.root") == null) { + System.setProperty("grape.root", "."); + } this.runner = new BootstrapRunner(configuration, files, args.toArray(new String[args.size()])); this.runner.compileAndRun(); @@ -153,6 +160,11 @@ public class RunCommand extends OptionParsingCommand { return !this.options.has(RunCommand.this.noGuessDependenciesOption); } + @Override + public boolean isLocal() { + return this.options.has(RunCommand.this.localOption); + } + @Override public Level getLogLevel() { if (this.options.has(RunCommand.this.verboseOption)) { diff --git a/spring-bootstrap-cli/src/main/java/org/springframework/bootstrap/cli/compiler/autoconfigure/SpringMvcCompilerAutoConfiguration.java b/spring-bootstrap-cli/src/main/java/org/springframework/bootstrap/cli/compiler/autoconfigure/SpringMvcCompilerAutoConfiguration.java index e57f966484c..4210232c4df 100644 --- a/spring-bootstrap-cli/src/main/java/org/springframework/bootstrap/cli/compiler/autoconfigure/SpringMvcCompilerAutoConfiguration.java +++ b/spring-bootstrap-cli/src/main/java/org/springframework/bootstrap/cli/compiler/autoconfigure/SpringMvcCompilerAutoConfiguration.java @@ -56,7 +56,8 @@ public class SpringMvcCompilerAutoConfiguration extends CompilerAutoConfiguratio @Override public void applyImports(ImportCustomizer imports) { imports.addStarImports("org.springframework.web.bind.annotation", - "org.springframework.web.servlet.config.annotation"); + "org.springframework.web.servlet.config.annotation", + "org.springframework.http"); imports.addStaticImport( "org.springframework.bootstrap.cli.template.GroovyTemplate", "template"); } diff --git a/spring-bootstrap-cli/src/main/java/org/springframework/bootstrap/cli/runner/BootstrapRunnerConfiguration.java b/spring-bootstrap-cli/src/main/java/org/springframework/bootstrap/cli/runner/BootstrapRunnerConfiguration.java index a8dbaa895ab..501c976af02 100644 --- a/spring-bootstrap-cli/src/main/java/org/springframework/bootstrap/cli/runner/BootstrapRunnerConfiguration.java +++ b/spring-bootstrap-cli/src/main/java/org/springframework/bootstrap/cli/runner/BootstrapRunnerConfiguration.java @@ -38,4 +38,9 @@ public interface BootstrapRunnerConfiguration extends GroovyCompilerConfiguratio */ Level getLogLevel(); + /** + * Returns {@code true} if the dependencies should be cached locally + */ + boolean isLocal(); + } diff --git a/spring-bootstrap-cli/src/main/scripts/spring b/spring-bootstrap-cli/src/main/scripts/spring index 19121254f5a..bb38c61e749 100755 --- a/spring-bootstrap-cli/src/main/scripts/spring +++ b/spring-bootstrap-cli/src/main/scripts/spring @@ -66,7 +66,7 @@ mkdir -p "${TARGETDIR%/}" CLASSPATH="${CLASSPATH}":"${SPRING_BIN}":"${TARGETDIR}" -for f in "${SPRING_HOME}"/*.jar "${SPRING_HOME}"/lib/*.jar "${SPRING_HOME}"/classes; do +for f in "${SPRING_HOME}"/classes "${SPRING_HOME}"/*.jar "${SPRING_HOME}"/lib/*.jar; do [ -f $f ] && CLASSPATH="${CLASSPATH}":$f done