Carefully add nested archives from JAR in PropertiesLauncher

If user runs an executable archive then it and its lib directory will be
on the classpath. Entries from loader.path take precedence in a way that
should make sense to users (earlier wins like in CLASSPATH env var).

Also added new integration tests to verify the behaviour (big improvement
on the old ones, which probably aought to be beefed up to the same
standard).

Fixes gh-2314
This commit is contained in:
Dave Syer
2015-01-20 17:23:25 +00:00
parent c857f957fa
commit 4e907f19ce
9 changed files with 304 additions and 16 deletions

View File

@@ -142,7 +142,7 @@ Their purpose is to load resources (`.class` files etc.) from nested jar files o
files in directories (as opposed to explicitly on the classpath). In the case of the
`[Jar|War]Launcher` the nested paths are fixed (`+lib/*.jar+` and `+lib-provided/*.jar+` for
the war case) so you just add extra jars in those locations if you want more. The
`PropertiesLauncher` looks in `lib/` by default, but you can add additional locations by
`PropertiesLauncher` looks in `lib/` in your application archive by default, but you can add additional locations by
setting an environment variable `LOADER_PATH` or `loader.path` in `application.properties`
(comma-separated list of directories or archives).