PropertiesLauncher 特性

PropertiesLauncher 具有一些可以通过外部属性(系统属性、环境变量、清单条目或 loader.properties)启用的特殊功能。 下表描述了这些属性:

Key 作用

loader.path

以逗号分隔的Classpath,例如 lib,${HOME}/app/lib。 前面的条目优先级更高,类似于 javac 命令行中的常规 -classpath

loader.home

用于解析 loader.path 中的相对路径。 例如,给定 loader.path=lib,则 ${loader.home}/lib 是一个classpath位置(以及该目录下所有jar文件)。 此属性还用于定位 loader.properties 文件,如以下示例 /opt/app。默认值为 ${user.dir}

loader.args

main方法的默认参数(以空格分隔)。

loader.main

要启动的main类名(例如 com.app.Application)。

loader.config.name

属性文件名(例如 launcher)。 默认值为 loader

loader.config.location

属性文件路径(例如 classpath:loader.properties)。 默认值为 loader.properties

loader.system

布尔标志,指示是否将所有属性添加到System属性。 默认值为 false

当作为环境变量或清单条目指定时,应使用以下名称:

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

构建插件在构建uber jar时会自动将 Main-Class 属性移动到 Start-Class。 如果使用该方式,请通过 Main-Class 属性指定要启动的类名,并省略 Start-Class

以下规则适用于使用 PropertiesLauncher

  • loader.properties 会依次在 loader.home、classpath根目录以及 classpath:/BOOT-INF/classes 中查找。 首个存在该文件的位置会被使用。

  • 仅当未指定 loader.config.location 时,loader.home 才作为额外属性文件(覆盖默认值)的目录位置。

  • loader.path 可以包含目录(会递归扫描jar和zip文件)、归档路径、归档内的目录(如 dependencies.jar!/lib,会扫描其中的jar文件),或通配符模式(遵循JVM默认行为)。 归档路径可以相对于 loader.home,也可以在文件系统任意位置(带 jar:file: 前缀)。

  • loader.path(若为空)默认为 BOOT-INF/lib(即本地目录,或若从归档运行则为嵌套目录)。 因此,当未提供额外配置时,PropertiesLauncher 的行为与 JarLauncher 相同。

  • loader.path 不能用于配置 loader.properties 的位置(后者的查找classpath为JVM classpath)。

  • 所有值在使用前,都会从System和环境变量以及属性文件本身进行占位符替换。

  • 属性的查找顺序(如需多处查找)为:环境变量、系统属性、loader.properties、解包归档清单、归档清单。