PropertiesLauncher の機能

PropertiesLauncher には、外部プロパティ(システムプロパティ、環境変数、マニフェストエントリ、loader.properties)で有効にできる特別な機能がいくつかあります。次の表で、これらのプロパティについて説明します。

キー 目的

loader.path

lib,${HOME}/app/lib などのコンマ区切りのクラスパス。javac コマンドラインの通常の -classpath のように、以前のエントリが優先されます。

loader.home

loader.path の相対パスを解決するために使用されます。例: loader.path=lib を指定すると、${loader.home}/lib はクラスパスの場所です(そのディレクトリ内のすべての jar ファイルとともに)。このプロパティは、次の例 /opt/app のように、loader.properties ファイルを見つけるためにも使用されます。デフォルトは ${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 です。

環境変数またはマニフェストエントリとして指定する場合、次の名前を使用する必要があります。

キー マニフェストエントリ 環境変数

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 の場所を構成することはできません(loader.properties の検索に使用されるクラスパスは、PropertiesLauncher の起動時の JVM クラスパスです)。

  • プレースホルダーの置換は、システムおよび環境変数に加えて、使用前にすべての値のプロパティファイル自体から行われます。

  • プロパティの検索順序(複数の場所を調べるのが理にかなっている場合)は、環境変数、システムプロパティ、loader.properties、展開されたアーカイブマニフェスト、アーカイブマニフェストです。