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

main 方法的預設引數(以空格分隔)。

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.home 中,然後在類別路徑的根目錄中,然後在 classpath:/BOOT-INF/classes 中搜尋 loader.properties。使用第一個存在具有該名稱的檔案的位置。

  • 僅當未指定 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、exploded 歸檔 manifest 和歸檔 manifest。