421 Commits

Author SHA1 Message Date
Dave Syer
f1f36cd002 Extract closure grabber into AstUtils 2014-05-25 18:58:25 +01:00
Dave Syer
b71f07932e Support for explicit module path in dependency
Instead of *always* needing to pull auto-import dependencies
from the master parent pom, we now allow normal @Grab-style
module specifications, e.g. "io.ratpack:ratpack-groovy:0.9.2"
2014-05-25 18:58:07 +01:00
Phillip Webb
1a475102de Polish 2014-05-22 20:33:08 +01:00
Dave Syer
1e6a4f3f65 Remove duplicate JreProxySelector
Since we upgraded Aether we now have the native JreProxySelector
available so we don't need to keep a copy ourselves.
2014-05-22 18:03:52 +01:00
Dave Syer
0e2f9e74db Ensure a JreProxySelector is applied as a fallback
The issue was that the JreProxySelector was only applied
if the existing selector was null, but that hasn't been the case
since we added supporty for settings.xml. The strategy now is to
fallback to a JreProxySelector if the existing one is null
or not already a composite. Fixes gh-914.
2014-05-22 17:38:24 +01:00
Andy Wilkinson
1deeccda30 Revert "Work around Groovy compiler bug that can name classes incorrectly"
This reverts commit 46fc5c05e32b757c0d95eb13d4a592aa06593af3.

Closes #598
2014-05-21 13:58:44 +01:00
Phillip Webb
8bcda1bcbe Polish 2014-05-20 18:26:56 +01:00
Dave Syer
334c8142c4 Enhance Groovy template support in CLI
to allow user to specify the TemplateEngine

Fixes gh-908
2014-05-20 12:36:32 +01:00
Andy Wilkinson
d2fc80b818 Allow custom dependency metadata to be used with the CLI
Add support for a new annotation, @GrabMetadata, that can be used
to provide the coordinates of one or more properties files, such as
the one published by Spring IO Platform, as a source of dependency
metadata. For example:

@GrabMetadata("com.example:metadata:1.0.0")

The referenced properties files must be in the format
group:module=version.

Limitations:

 - Only a single @GrabMetadata annotation is supported
 - The referenced properties file must be accessible in one of the
   default repositories, i.e. it cannot be accessed in a repository
   that's added using @GrabResolver

Closes #814
2014-05-19 17:47:31 +01:00
Phillip Webb
506c0f50b9 Allow meta-data driven version overrides in Gradle
Add a `versionManagement` gradle configuration which can be used to
provide alternative version meta-data. Primarily added so that the
Spring IO platform can provide version overrides without causing a
cyclic build dependency.

Fixes gh-750
2014-05-08 14:37:42 +01:00
Dave Syer
894482df1a Initialize logback is it is present in CLI
This (empirically) fixes gh-726 using a new utility
(LogbackInitializer) in the loader tools. If anyone has enough
Gradle fu to understand where to put it (after the classpath is established
but before compilation) we could do the same thing in the Gradle plugin
(and that would fix gh-724).
2014-05-07 07:21:48 -07:00
Dave Syer
1b7d8d9ade Add SignalUtils to handle OS interrupts
Extract into a utility to be shared between Shell and RunMojo

Fixes gh-773
2014-05-02 20:17:22 +01:00
Dave Syer
b12631d75d Ensure Spring Integration 4.0 is used in CLI
There was an issue with the generated poms for the dependency
tools (I'm not sure the generation step works if you don't
do "mvn clean"). Anyway I verified that it works and removed
the (now) unnecessary provided dependency from spring-boot-cli.

Fixes gh-362
2014-05-01 12:57:12 +01:00
Artem Bilan
ce3aafa7a9 Upgrade to Spring Integration 4.0
Closes #751
2014-05-01 10:07:17 +01:00
Dave Syer
b884a73396 Share RunProcess with CLI 2014-05-01 09:48:05 +01:00
Dave Syer
12ede8689a Prevent duplicate files from getting onto sources 2014-04-30 17:33:23 +01:00
Dave Syer
f46d281b22 Upgrade to Reactor 1.1
Fixes gh-706
2014-04-30 11:27:29 +01:00
sopov.ivan
174b654faf minor test fixes
Reverting arguments in assertEquals where constant was placed on
the "actual" place. Replacing assertEquals with assertFalse, assertTrue
and assertNull where applicable.

Fixes gh-735
2014-04-26 14:14:05 +01:00
Phillip Webb
4119ef5cf4 Use random ports for tests
Update remaining tests to use random ports.

Fixes gh-337
2014-04-23 19:11:54 +01:00
Dave Syer
0ed1642989 Tweak autoconfigs in websocket support 2014-04-18 13:38:30 -07:00
Dave Syer
ac16aa1757 Add SpringWebsocketCompilerAutoConfiguration
Fixes gh-693
2014-04-18 13:23:01 -07:00
Phillip Webb
ed3fc06d81 Remove non-working cli --edit option
Fixes gh-611
2014-03-31 17:28:14 -07:00
Phillip Webb
35b1a59bbd Fix cli --watch option
Fix SpringApplicationRunner to correctly locate files to watch for
reload.

Fixes gh-610
2014-03-31 17:25:59 -07:00
Andy Wilkinson
46fc5c05e3 Work around Groovy compiler bug that can name classes incorrectly
If a source URL is added to a CompilationUnit and that source URL does
not contain any slashes, the resulting ClassNode in the AST will be
incorrectly named. For example, a URL of 'file:foo.groovy' will produce
a ClassNode named 'file:foo'. The expected name is 'foo'.

This commit works around this problem by adding any URL sources with a
file protocol to the compilation unit as File instances. Any URL sources
that do not have a file protocol continue to be added as URL instances.
Such URLs are still prone to this bug should we be dealing with one
that contains no slashes. A fix for the underlying Groovy bug will
address this possibility.

Fixes #594
2014-03-27 16:49:37 +00:00
Phillip Webb
beaddb2362 Polish 2014-03-26 13:29:26 -07:00
Phillip Webb
0960ac760e Check that cli jar command only writes .jars
Update `JarCommand` to check that the file extension of the output is
`.jar`.

Fixes gh-581
2014-03-25 14:58:35 -07:00
Phillip Webb
44d708ef7a Polish 2014-03-25 14:33:27 -07:00
Andy Wilkinson
b8858bdb8f Enable support for use of encryption in Maven's settings.xml
This commit updates the CLI so that it will decrypt any encrypted
passwords in a user's Maven settings.xml file.

The code that performs the decrytion has a transitive dependency on
three types in Plexus' logging API. There are tens of different
artifacts containing this API available in Maven Central. Rather than
bloating the API with a dependency on a complete Plexus container,
which could perhaps be considered the primary source, a dependency on
a considerably smaller artifact has been introduced.

Closes #574
2014-03-25 19:23:58 +00:00
Dave Syer
60fe468af9 Make JAR files on classpath a special case for archive
If the user adds a JAR file to the classpath in "spring jar -cp ..."
he expected it to end up in the classpath of the executable jar
(i.e. in the nested lib/ directory). Before this change it would
have gone in the root of the executable JAR, causing errors at runtime.

The fix is slightly awkward, since it assumes that any JAR in the
"roots" of the ResourceMatcher come from the classpath (which *is*
the case currently, but might not always be at least in principle).
Seems like a reasonable compromise given it's a quick change
and some tests have been included.

Fixes gh-565
2014-03-25 11:36:24 +00:00
Dave Syer
a3a58e1e13 Move @EnableRabbitMessaging into the non-protected package
Fixes gh-573
2014-03-25 09:56:44 +00:00
Phillip Webb
47eb8180b3 Rename spring-boot-starter-shell -> remote-shell
Fixes gh-462
2014-03-21 09:05:56 -07:00
Phillip Webb
5ab88b2344 Automatically add schedule annotation imports 2014-03-20 16:30:34 -07:00
Phillip Webb
4024450c5f Rename starter-shell-remote to starter-shell
Fixes gh-462
2014-03-19 16:28:36 -07:00
Phillip Webb
98e4008b16 Don't display hint command in options help
Fixes gh-471
2014-03-18 15:47:35 -07:00
Andy Wilkinson
44826812db Add templates/** to list of default includes for CLI jars
Boot promotes the use of a templates directory for housing view
templates. Include this directory by default when building a jar file
from a CLI app.

Fixes #455
2014-03-10 10:28:50 +00:00
Sebastien Deleuze
e9ead99e9c Make Spring Boot tests locale independent
Fixes gh-405
2014-02-26 16:43:28 +00:00
Dave Syer
f0f73a4ead Current directory (lodaer.path=.) pathology workaround
It turns out that loader.path=. was pathological and before this
change ended up making the classpath empty (loader.path=.,lib/
would have fixed it). With this change the old behaviour is still
supported, but if the only user-supplied path entry is "." (or
empty) then it is now kept, and translates into the root of the
current archive if running as "java -jar ...".

Fixes gh-270
2014-02-25 12:38:25 +00:00
Christian Dupuis
703d7d3fd9 Prevent EmptyStackException in case no stack of prompts is empty 2014-02-16 14:05:58 +01:00
Phillip Webb
af93ae2dac Ignore failing JMS tests for now
Ignore JMS sample which intermittently fails to run on CI.

See gh-323
2014-02-07 10:30:19 -08:00
Phillip Webb
ed9735361e Apply source cleanup and formatting 2014-02-05 22:53:28 -08:00
Phillip Webb
0f083c2f9d Fix CLI class tangle 2014-02-03 21:25:12 -08:00
Phillip Webb
1061d582dc Fix CLI package tangles 2014-02-03 21:25:12 -08:00
Phillip Webb
70cb8cfed6 Fix CLI package and class tangles 2014-02-03 21:25:04 -08:00
Phillip Webb
c65dc9063c Don't expose URLs from InnerLoader
Update the CLI Groovy InnerLoader to not expose URLs. This prevents the
'TLD skipped' log messages from Tomcat that occurred previously due to
the InnerLoader and parent returning the same URLs.

Fixes gh-277
2014-01-30 14:32:16 -08:00
Phillip Webb
208bf8fc96 Polish CLI Jar generation 2014-01-29 22:46:31 -08:00
Phillip Webb
d648603634 Exclude *.jar and *.groovy from generated JARs
Update `JarCommand` to exclude `**/*.groovy` and `**/*.jar` by default.
2014-01-29 16:10:14 -08:00
Phillip Webb
c852fb5a79 Update packaged JARs to use standard JarLauncher
Change CLI generated JARs to use the standard `JarLauncher` instead of
a custom `JarRunner`. The `PackagedSpringApplicationLauncher` is used
as the `Start-Class` which in turn calls `SpringApplication.run()`.
2014-01-29 16:01:50 -08:00
Andy Wilkinson
96e10104e4 Add a command to produce a self-contained executable JAR for a CLI app
A new command, jar, has been added to the CLI. The command can be
used to create a self-contained executable JAR file from a CLI app.

Basic usage is:

spring jar <jar-name> <source-files>

For example:

spring jar my-app.jar *.groovy

The resulting jar will contain the classes generated by compiling the
source files, all of the application's dependencies, and entries
on the application's classpath.

By default a CLI application has the current working directory on
its classpath. This can be overridden using the --classpath option.
Any file that is referenced directly by the classpath is always
included in the jar. Any file that is found a result of being
contained within a directory that is on the classpath is subject to
filtering to determine whether or not it should be included. The
default includes are public/**, static/**, resources/**,
META-INF/**, *. The default excludes are .*, repository/**, build/**,
target/**. To be included in the jar, a file must match one of the
includes and none of the excludes. The filters can be overridden using
the --include and --exclude options.

Closes #241
2014-01-29 14:05:15 +00:00
Ben Hale
f2951b38d9 Ruby indentation conventions
By convention, Ruby code is indented using two spaces (  ) per-level.
The code used tabs (\t) previously and therefore wasn't idiomatic.
This change updates the indenting to use two spaces.
2014-01-28 07:18:37 +00:00
Ben Hale
a3c398ca0a Add --HEAD support to Homebrew formula
This change adds support for --HEAD builds to the Homebrew formula. It
defines a conditional dependency on Maven and builds the -cli project
during install.  The location to install from is abstracted out so
that code is identical regardless of whether the build is --HEAD or
mainline.
2014-01-28 07:18:10 +00:00