public class PropertiesLauncher extends Launcher
Launcher
for archives with user-configured classpath and main class via a
properties file. This model is often more flexible and more amenable to creating
well-behaved OS-level services than a model based on executable jars.
Looks in various places for a properties file to extract loader settings, defaulting to
application.properties
either on the current classpath or in the current
working directory. The name of the properties file can be changed by setting a System
property loader.config.name
(e.g. -Dloader.config.name=foo
will look for foo.properties
. If that file doesn't exist then tries
loader.config.location
(with allowed prefixes classpath:
and
file:
or any valid URL). Once that file is located turns it into
Properties and extracts optional values (which can also be provided overridden as
System properties in case the file doesn't exist):
loader.path
: a comma-separated list of directories to append to the
classpath (containing file resources and/or nested archives in *.jar or *.zip).
Defaults to lib
(i.e. a directory in the current working directory)loader.main
: the main method to delegate execution to once the class
loader is set up. No default, but will fall back to looking for a
Start-Class
in a MANIFEST.MF
, if there is one in
${loader.home}/META-INF
.Modifier and Type | Field and Description |
---|---|
static String |
ARGS
Properties key for default command line arguments.
|
static String |
CONFIG_LOCATION
Properties key for config file location (including optional classpath:, file: or
URL prefix)
|
static String |
CONFIG_NAME
Properties key for name of external configuration file (excluding suffix).
|
static String |
HOME
Properties key for home directory.
|
static String |
MAIN
Properties key for main class.
|
static String |
PATH
Properties key for classpath entries (directories possibly containing jars).
|
static String |
SET_SYSTEM_PROPERTIES
Properties key for boolean flag (default false) which if set will cause the
external configuration properties to be copied to System properties (assuming that
is allowed by Java security).
|
Constructor and Description |
---|
PropertiesLauncher() |
Modifier and Type | Method and Description |
---|---|
protected ClassLoader |
createClassLoader(List<Archive> archives)
Create a classloader for the specified archives.
|
protected String[] |
getArgs(String... args) |
protected List<Archive> |
getClassPathArchives()
Returns the archives that will be used to construct the class path.
|
protected File |
getHomeDirectory() |
protected String |
getMainClass()
Returns the main class that should be launched.
|
static void |
main(String[] args) |
static String |
toCamelCase(CharSequence string) |
createArchive, createClassLoader, createMainMethodRunner, launch, launch
public static final String MAIN
Start-Class
.public static final String PATH
loader home directory
).public static final String HOME
loader path
. Defaults to current working directory (
${user.dir}
).public static final String ARGS
public static final String CONFIG_NAME
loader config location
is
provided instead.public static final String CONFIG_LOCATION
public static final String SET_SYSTEM_PROPERTIES
protected File getHomeDirectory()
protected String getMainClass() throws Exception
Launcher
getMainClass
in class Launcher
Exception
protected ClassLoader createClassLoader(List<Archive> archives) throws Exception
Launcher
createClassLoader
in class Launcher
archives
- the archivesException
protected List<Archive> getClassPathArchives() throws Exception
Launcher
getClassPathArchives
in class Launcher
Exception
public static String toCamelCase(CharSequence string)
Copyright © 2014. All rights reserved.