PropertiesLauncher 特性
PropertiesLauncher 具有一些特殊功能,可以通过外部属性(系统属性、环境变量、清单条目或 loader.properties)启用。下表描述了这些属性:
| 键 | 用途 |
|---|---|
loader.path | 以逗号分隔的类路径,例如 lib,${HOME}/app/lib。较早的条目优先级更高,类似于 javac 命令行中的常规 -classpath。 |
loader.home | 用于解析 loader.path 中的相对路径。例如,给定 loader.path=lib,则 ${loader.home}/lib 是一个类路径位置(包括该目录下的所有 jar 文件)。此属性还用于定位 loader.properties 文件,例如 [/opt/app](file:///opt/app),默认值为 ${user.dir}。 |
loader.args | 主方法的默认参数(以空格分隔)。 |
loader.main | 要启动的主类名称(例如 com.app.Application)。 |
loader.config.name | 属性文件的名称(例如 launcher),默认为 loader。 |
loader.config.location | 属性文件的路径(例如 classpath:loader.properties),默认为 loader.properties。 |
loader.system | 布尔标志,指示是否应将所有属性添加到系统属性中,默认为 false。 |
当指定为环境变量或清单条目时,应使用以下名称:
| 键 | Manifest 条目 | 环境变量 |
|---|---|---|
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 |
构建插件在构建 uber jar 时会自动将 Main-Class 属性移动到 Start-Class。如果你使用该功能,请通过 Main-Class 属性指定要启动的类名,并省略 Start-Class。
以下规则适用于使用 PropertiesLauncher:
-
loader.properties会在loader.home、类路径的根目录,以及classpath:/BOOT-INF/classes中依次查找。使用第一个找到该文件名的位置。 -
loader.home仅在未指定loader.config.location时,作为额外属性文件(覆盖默认值)的目录位置。 -
loader.path可以包含目录(递归扫描其中的 jar 和 zip 文件)、归档路径、归档内用于扫描 jar 文件的目录(例如dependencies.jar!/lib),或通配符模式(默认 JVM 行为)。归档路径可以相对于loader.home,或通过jar:file:前缀指向文件系统中的任意位置。 -
loader.path(若为空)默认为BOOT-INF/lib(表示本地目录,或从归档运行时的嵌套目录)。因此,在未提供额外配置的情况下,PropertiesLauncher 的行为与 JarLauncher 相同。 -
loader.path不能用于配置loader.properties的位置(搜索后者所用的类路径是启动 PropertiesLauncher 时的 JVM 类路径)。 -
在使用前,所有值都会从系统变量、环境变量以及属性文件本身进行占位符替换。
-
属性的搜索顺序(在多个位置有意义时)为:环境变量、系统属性、
loader.properties、解压后的归档清单、归档清单。