82 lines
3.6 KiB
Plaintext
82 lines
3.6 KiB
Plaintext
[[executable-jar.property-launcher]]
|
|
== PropertiesLauncher Features
|
|
`PropertiesLauncher` has a few special features that can be enabled with external properties (System properties, environment variables, manifest entries, or `loader.properties`).
|
|
The following table describes these properties:
|
|
|
|
|===
|
|
| Key | Purpose
|
|
|
|
| `loader.path`
|
|
| Comma-separated Classpath, such as `lib,$\{HOME}/app/lib`.
|
|
Earlier entries take precedence, like a regular `-classpath` on the `javac` command line.
|
|
|
|
| `loader.home`
|
|
| Used to resolve relative paths in `loader.path`.
|
|
For example, given `loader.path=lib`, then `${loader.home}/lib` is a classpath location (along with all jar files in that directory).
|
|
This property is also used to locate a `loader.properties` file, as in the following example `file:///opt/app` It defaults to `${user.dir}`.
|
|
|
|
| `loader.args`
|
|
| Default arguments for the main method (space separated).
|
|
|
|
| `loader.main`
|
|
| Name of main class to launch (for example, `com.app.Application`).
|
|
|
|
| `loader.config.name`
|
|
| Name of properties file (for example, `launcher`).
|
|
It defaults to `loader`.
|
|
|
|
| `loader.config.location`
|
|
| Path to properties file (for example, `classpath:loader.properties`).
|
|
It defaults to `loader.properties`.
|
|
|
|
| `loader.system`
|
|
| Boolean flag to indicate that all properties should be added to System properties.
|
|
It defaults to `false`.
|
|
|===
|
|
|
|
When specified as environment variables or manifest entries, the following names should be used:
|
|
|
|
|===
|
|
| Key | Manifest entry | Environment variable
|
|
|
|
| `loader.path`
|
|
| `Loader-Path`
|
|
| `LOADER_PATH`
|
|
|
|
| `loader.home`
|
|
| `Loader-Home`
|
|
| `LOADER_HOME`
|
|
|
|
| `loader.args`
|
|
| `Loader-Args`
|
|
| `LOADER_ARGS`
|
|
|
|
| `loader.main`
|
|
| `Start-Class`
|
|
| `LOADER_MAIN`
|
|
|
|
| `loader.config.location`
|
|
| `Loader-Config-Location`
|
|
| `LOADER_CONFIG_LOCATION`
|
|
|
|
| `loader.system`
|
|
| `Loader-System`
|
|
| `LOADER_SYSTEM`
|
|
|===
|
|
|
|
TIP: Build plugins automatically move the `Main-Class` attribute to `Start-Class` when the fat jar is built.
|
|
If you use that, specify the name of the class to launch by using the `Main-Class` attribute and leaving out `Start-Class`.
|
|
|
|
The following rules apply to working with `PropertiesLauncher`:
|
|
|
|
* `loader.properties` is searched for in `loader.home`, then in the root of the classpath, and then in `classpath:/BOOT-INF/classes`.
|
|
The first location where a file with that name exists is used.
|
|
* `loader.home` is the directory location of an additional properties file (overriding the default) only when `loader.config.location` is not specified.
|
|
* `loader.path` can contain directories (which are scanned recursively for jar and zip files), archive paths, a directory within an archive that is scanned for jar files (for example, `dependencies.jar!/lib`), or wildcard patterns (for the default JVM behavior).
|
|
Archive paths can be relative to `loader.home` or anywhere in the file system with a `jar:file:` prefix.
|
|
* `loader.path` (if empty) defaults to `BOOT-INF/lib` (meaning a local directory or a nested one if running from an archive).
|
|
Because of this, `PropertiesLauncher` behaves the same as `JarLauncher` when no additional configuration is provided.
|
|
* `loader.path` can not be used to configure the location of `loader.properties` (the classpath used to search for the latter is the JVM classpath when `PropertiesLauncher` is launched).
|
|
* Placeholder replacement is done from System and environment variables plus the properties file itself on all values before use.
|
|
* The search order for properties (where it makes sense to look in more than one place) is environment variables, system properties, `loader.properties`, the exploded archive manifest, and the archive manifest.
|