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 。 |
当指定为环境变量或清单条目时,应使用以下名称:
键值 | 清单条目 | 环境变量 |
---|---|---|
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
、展开的归档清单和归档清单。