PropertiesLauncher 功能

PropertiesLauncher 有一些特殊功能,可以透過外部屬性(系統屬性、環境變數、Manifest 條目或 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 它預設為 ${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 條目時,應使用以下名稱

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.config.location 時,loader.home 才是額外屬性檔案(覆蓋預設值)的目錄位置。

  • 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、解壓的歸檔 Manifest 和歸檔 Manifest。