Commit Graph

1375 Commits (f6f8c26f698d95ef4ce014e8a5024acd105b1a2f)
 

Author SHA1 Message Date
Dave Syer 796816e8c3 Remove CleanCommand
Fixes gh-230
11 years ago
Phillip Webb c8a1d8830c Refactor CLI internals for REPL shell
Numerous updates to the Spring CLI, primarily for better embedded REPL
shell support:

* Refactor the CLI application to help separate concerts between the
  main CLI and the embedded shell. Both the CLI and embedded shell now
  delegate to a new `CommandRunner` to handle running commands. The
  runner can be configured differently depending depending on need.
  For example, the embedded shell adds the 'prompt' and 'clear'
  commands.

* Most `Command` implementations have been moved to sub-packages so that
  they can be co-located with the classes that they use.

* Option commands are now only used in the CLI, the embedded shell
  does not user them and details have been removed from the Command
  interface.

* The REPL shell has been significantly refactored to:
    - Support CTRL-C to cancel the running process. This is supported
      when running external commands and most internal commands.
    - Fork a new JVM when running commands (primarily for CTRL-C support
      but also for potential memory and classpath issues)
    - Change the "continue" trigger from `<<` to `\`
    - Support command completion of files
    - Add ANSI color output
    - Provide 'help' support for internal commands (such as 'clear')
    - Remove the now redundant `stop` command

Fixes gh-227
11 years ago
Phillip Webb cad9fbfdf0 Fix CLI help formatting issue with '-cp'
Ensure that '--cp' is replaced with a same length string to prevent
odd help text formatting.
11 years ago
Phillip Webb 4fc9dfc2d5 Revert "Add launcher.count as useful performance testing aid"
This reverts commit e1605b4691.
11 years ago
Phillip Webb 3b259bc865 Polish 11 years ago
Dave Syer 5592023f16 Add support for reloading resources in Gradle plugin
Usage:

$ gradle bootRun
...

Edit files in src/main/resources and see the changes live in a web app
(e.g. static resources in /static).

The old functionality of bootRun has been replaced (since it didn't add
a lot of value and also didn't expose any JMV argument setters of anything).
This new feature set is backed by any existing "run" task configuration.

In addition autodetects a main class if there is one in the project
sources, so no need for mainClassName = '...' in build.gradle.

Applies the 'application' plugin (so no need to declare that either).

Fixes gh-225
11 years ago
Andy Wilkinson 5fb42c3c33 Support @Grab when app has multiple groovy scripts
The AST transformation that processes @Grab annotations is driven once
per source file. Previously, this meant that if an app consisted of
multiple source files then multiple, discrete dependency resolutions
would be performed.

This commit updates AetherGrapeEngine to cache a previous resolution's
outcome and use its dependency to influence the outcome of subsequent
resolutions. For example if a one resolution results in spring-core
4.0.0.RELEASE being added to the classpath, subsequent resolutions
that depend upon spring-core will always get the 4.0.0.RELEASE
version. This is achieved by using the dependencies found by earlier
resolutions as dependency management configuration of the current
resolution. This removes the possibility of multiple versions of the
same dependency ending up on the classpath.

In addition to using the results of earlier resolutions to provide
dependency management configuration, default dependency management
configuration is also provided. This configuration is specified by
the springcli.properties file and ensures that, where Boot prescribes
certain versions of a dependency, that is the version that will be
resolved. For example, this ensures that spring-data-redis, which
depends upon Spring 3.1.4, pulls in the version of Spring that Boot
requires instead.

Fixes #224
11 years ago
Andy Wilkinson b45683f103 Only auto-configure Reduce if Lettuce is on the classpath
Fixes #226
11 years ago
Dave Syer 57ba6a40b6 Divert out/err streams while command runs
Actually System.in works fine, it's the output streams that get buffered.
We can fix it by diverting them for the duration of the command.

Fixes gh-217
11 years ago
Dave Syer 6b6bd37924 Add hint to user about 'stop' command
Improves gh-218
11 years ago
Dave Syer 1f5cba9e32 Clear prompt before clearing screen
Fixes gh-219
11 years ago
Dave Syer fa8e4768b9 Prevent JLine from expanding !history events
We might also want to rethink "!" as a shell exec command (since it means
something in a real shell and in JLine). E.g. use "exec" or something.

Partial fix for gh-220 (ideally we'd process the events and catch
and handle exceptions).
11 years ago
Dave Syer b07a1998df Remove InitCommand altogether
Related to gh-212
11 years ago
Dave Syer 8ff2a88712 Fix counting error in SourceOptions 11 years ago
Dave Syer a5f16d46fe Remove ScriptCommand support
InitCommand remains for now, so that you can @Grab a jar with
custom commands if you so choose.

Contributes to gh-212
11 years ago
Andy Wilkinson c921c9410b Improve startup failure diagnostics
A typical cause of startup failure is an incorrectly configured
classpath. Previously the classpath used to launch the application
wasn't easy for a user to discover. This made problem diagnosis
difficult. This commit adds an application listener that, in the event
of a start error, logs the thread context class loader's classpath at
INFO level. The classpath is also logged at DEBUG level when an
application starts successfully.
11 years ago
Dave Syer 3e6eb6fec8 Remove support for InitCommand outside REPL
In this commit we retain "init" as a command inside the ShellCommand
but not on the bash command line.

Seems to have an impact on performance so relevant to gh-212.
11 years ago
Dave Syer c43d91598e Update config location docs 11 years ago
Dave Syer 5b90e18564 More performance tweaks for SpringCli 11 years ago
Dave Syer e1605b4691 Add launcher.count as useful performance testing aid 11 years ago
Andy Wilkinson 895daacde9 Roll spring-boot-maven-settings into the CLI 11 years ago
Phillip Webb 719b47fad8 Polish 11 years ago
Phillip Webb e3b352e0b5 Support 'headless' applications
Update SpringApplication to run by default in 'headless' mode. This
prevents the AWT system from creating a Java icon (for example in the
OSX dock).

Also update builds to run tests in 'headless' mode.
11 years ago
Phillip Webb 0e413c3b48 Update to latest maven plugins 11 years ago
Phillip Webb ffe8bf5419 Remove unused .gitignore files 11 years ago
Phillip Webb 2f71f9fa4c Add main.basedir property 11 years ago
Andy Wilkinson e96fa79c31 Don't pull test and provided dependencies into the CLI jar 11 years ago
Dave Syer c9f8dac9d9 Typo in howto 11 years ago
Dave Syer 165ba2eb45 Add some performance tests for InitCommand
Fixed gh-212 again
11 years ago
Dave Syer dba6a5bfaf Add support for = separator in EnvironmentTestUtils 11 years ago
Dave Syer 577c177d6a Fix typo in EnvironmentTestUtils
Fixes gh-214
11 years ago
Dave Syer c349cb66ba Ensure SpringApplication closes its ApplicationContext
...even if the CommandLineRunners fail and we drop to the error
handling path.

Fixes gh-211
11 years ago
Dave Syer 420fc69983 Only run InitCommand if there is code to process
This appears to be a significant improvement in performance
(checking for the existence of init.grooy is cheap, but compiling
it is expensive).

I'm going to say this fixes gh-212.
11 years ago
Dave Syer 322af41d72 Revert CLI to JarLauncher
Affects gh-212
11 years ago
Phillip Webb d125357bf6 Protect against JARs with different local headers
Fix JarEntryData to re-read the local header, rather than relying on
the central directory record.

This protects against the situation where a JAR file is written with an
'Extra Field Length' that is different in the local header to the
central directory header.

This appears to be the case with aspectj 1.7.4 which contains the
following central directory file header for ProceedingJoinPoint:

	50 4B 01 02     signature
	14 03           version made by
	0A 00           version required
	00 00           general
	08 00           compress methods
	0E 40 59 43     last modified
	2D 59 20 70     crc
	EC 00 00 00     csize
	8D 01 00 00     size
	2A 00           fname len
	00 00           ext field len
	00 00           file comment len
	00 00           disk num
	00 00           int file att
	00 00 A4 81     ext file att
	97 F3 00 00     relative offset of the local file header
	...             file name

and the following local header:

	50 4B 03 04     signature
	0A 00           version required
	00 00           general
	08 00           compress method
	0E 40 59 43     last modified
	2D 59 20 70     crc
	EC 00 00 00     csize
	8D 01 00 00     size
	2A 00           fname len
	14 00           ext field len
	...             file name
	...             extra field

Note that the 'ext field len' is 0x00 in the central record but 0x14 in
the local record.

Fixes gh-203
11 years ago
Phillip Webb 47da8a817a Polish 11 years ago
Phillip Webb 26d900f3ad Revert "Allow maven build with JDK 1.8"
Revert commit fd15b62a9d to
ensure that we don't accidentally use Java 8 features.
11 years ago
Phillip Webb 18a666caf8 Replaces references to 'files' with 'sources'
Replace references to 'files' throughout the code-base with 'sources'
following the rename of `FileOptions` to `SourceOptions`.

Also cleanup ResourceUtils a little
11 years ago
Phillip Webb 2c6231a0fc Restore eclipse settings to stop m2e errors 11 years ago
Dave Syer f038da1fe5 Throw an exception if a config file that exists cannot be parsed
Fixes gh-209 in a general way
11 years ago
Dave Syer cc996ce7f9 Extend YAML map key special cases to nested maps
Fixes gh-208
11 years ago
Dave Syer ff3af47ef0 Watch out for non-Strings in YAML map keys
Fixes gh-205
11 years ago
Dave Syer bd73705393 FileOptions -> SourceOptions to work with String paths instead of Files
We check for existence of the sources and (as before) resolve multiple
resources on the classpath if a path is not a File. In addition supports
Spring pseudo-URL prefixes as well as normal URLs as source locations.

In addition sources can now be specified as a directory (searched
recursively by default), or a resource pattern (e.g. app/**/*.groovy).

Fixes gh-207
11 years ago
Christian Dupuis 62e02d3d81 Add initialSize configuration property to datasource auto configuration
fixes #206
11 years ago
Dave Syer edaaac8993 Fix broken test
Recent changes to the repository configuration for @Grab
didn't update the tests which use the GroovyCompiler as
a standalone. Fixed that by using the
RepositoryConfigurationFactory.
11 years ago
Dave Syer 5bbb01c071 Move properties file to correct location 11 years ago
Christian Dupuis 1a44b3e676 Fix sorting of auto configuration classes on JDK 8 11 years ago
Christian Dupuis fd15b62a9d Allow maven build with JDK 1.8 11 years ago
Dave Syer d6b2ade8df Ensure logging initializer listens to the right event
This should make a difference to gh-196. It might even fix it
(depending on what snapshot the user had there).
11 years ago
Dave Syer 2377bd9ec9 Don't load BatchAutoConfiguration at all if there is no JobLauncher
Fixes gh-204
11 years ago