Bootは実行可能なjarおよびwarファイルをサポートできます。MavenプラグインまたはGradleプラグインを使用する場合、実行可能jarは自動的に生成されるため、通常、それらがどのように機能するかの詳細を知る必要はありません。別のビルドシステムから実行可能jarを作成する必要がある場合、または基礎となるテクノロジに興味がある場合は、この付録で背景を説明します。ネストされたJARJavaは、ネストされたjarファイル(つまり、jar内に含まれるjarファイル)をロードする標準的な方法を提供しません。これは、コマンドラインから展開せずに実行できる自己完結型アプリケーションを配布する必要がある場合に問題になる可能性があります。この問題を解決するために、多くの開発者は「シェーディングされた」jarファイルを使用します。jar」にパッケージ化します。シェーディングされたjarファイルの問題は、どのライブラリが実際にアプリケーションに含まれているかを見にくくなることです。複数のjarで同じファイル名(ただし、異なるコンテンツ)が使用されている場合、問題が発生する可能性があります。Bootは異なるアプローチを採用しており、実際にjarを直接ネストできます。Bootローダー互換のjarファイルは、次のように構成する必要があります。ディレクトリに配置する必要があります。ディレクトリに配置する必要があります。Bootローダー互換のwarファイルは、次のように構成する必要があります。ディレクトリに配置する必要があります。組み込みの実行時に必要であるが、従来のWebコンテナーにデプロイする場合には不要な依存関係は、WEB-INF/lib-providedに配置する必要があります。org.springframework.boot.loader.jar.JarFileです。これにより、標準のjarファイルまたはネストされた子jarデータからjarコンテンツをロードできます。場所は、次の例に示すように、外側のjarの物理ファイルオフセットにマップされます。見つける方法を示しています。この情報を使用して、外部jarの適切な部分をシークすることにより、特定のネストされたエントリをロードできます。アーカイブを解凍する必要はなく、すべてのエントリデータをメモリに読み込む必要もありません。Loaderは、既存のコードおよびライブラリとの互換性を維持するよう努めています。拡張されており、ドロップイン置換として機能するはずです。クラスは、実行可能なjarのメインエントリポイントとして使用される特別なブートストラップクラスです。メソッドを呼び出すために使用されます。PropertiesLauncher)があります。ファイルなど)をロードすることです(明示的にクラスパスにあるファイルとは対照的です)。WarLauncherの場合、ネストされたパスは固定されています。WEB-INF/lib-provided/を検索します。必要な場合は、これらの場所に追加のjarを追加できます。呼ばれる環境変数を設定することにより、追加の場所を追加できます。指定する必要があります。属性で指定する必要があります。com.mycompany.project.MyApplicationwarファイルの場合、次のようになります。エントリを指定する必要はありません。クラスパスは、ネストされたjarから推定されます。loader.properties)で有効にできる特別な機能がいくつかあります。次の表で、これらのプロパティについて説明します。目的loader.pathlib,${HOME}/app/libなどのコンマ区切りのクラスパス。ように、以前のエントリが優先されます。loader.homeloader.pathの相対パスを解決するために使用されます。クラスパスの場所です(そのディレクトリ内のすべてのjarファイルとともに)。ファイルを見つけるためにも使用されます。${user.dir}です。loader.argsmainメソッドのデフォルト引数(スペースで区切られます)。com.app.Application)。