実行可能アーカイブのパッケージ化
プラグインは、アプリケーションのすべての依存関係を含む実行可能アーカイブ(jar ファイルおよび war ファイル)を作成し、java -jar
で実行できます。
実行可能アーカイブのパッケージ化は、次の例に示すように、repackage
ゴールによって実行されます。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
repackage ゴールは、package フェーズで生成されたソース jar (または war ) で動作するため、コマンドラインで単独で使用することはできません。このゴールをコマンドラインで使用するには、package フェーズ (mvn package spring-boot:repackage ) を含める必要があります。 |
spring-boot-starter-parent を使用している場合、そのような実行は repackage 実行 ID ですでに事前設定されているため、プラグイン定義のみを追加する必要があります。 |
上記の例では、Maven ライフサイクルのパッケージフェーズ中にビルドされた jar
または war
アーカイブを再パッケージします。これには、プロジェクトで定義されている provided
依存関係も含まれます。これらの依存関係の一部を除外する必要がある場合は、exclude
オプションのいずれかを使用できます。詳細については、依存関係の除外を参照してください。
元の(実行不可能な)アーティファクトは、デフォルトで .original
に名前が変更されますが、カスタム分類子を使用して元のアーティファクトを保持することもできます。
maven-war-plugin の outputFileNameMapping 機能は現在サポートされていません。 |
spring-boot-devtools
および spring-boot-docker-compose
モジュールは、デフォルトで自動的に除外されます (これは、excludeDevtools
および excludeDockerCompose
プロパティを使用して制御できます)。これを war
パッケージ化で機能させるには、spring-boot-devtools
および spring-boot-docker-compose
の依存関係を optional
として設定するか、provided
スコープで設定する必要があります。
プラグインはマニフェストを書き換え、特に Main-Class
および Start-Class
エントリを管理します。デフォルトが機能しない場合は、jar プラグインではなく、Spring Boot プラグインで値を設定する必要があります。マニフェストの Main-Class
は、次の例に示すように、Spring Boot プラグインの layout
プロパティによって制御されます。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>${start.class}</mainClass>
<layout>ZIP</layout>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
layout
プロパティのデフォルトは、アーカイブ型(jar
または war
)によって決定される値です。次のレイアウトを使用できます。
JAR
: 通常の実行可能 JAR レイアウト。WAR
: 実行可能な WAR レイアウト。provided
依存関係は、war
がサーブレットコンテナーにデプロイされたときの衝突を避けるためにWEB-INF/lib-provided
に配置されます。ZIP
(別名DIR
):PropertiesLauncher
を使用したJAR
レイアウトに似ています。NONE
: すべての依存関係とプロジェクトリソースをバンドルします。ブートストラップローダーをバンドルしません。
階層化された Jar または War
再パッケージ化された jar には、アプリケーションのクラスと依存関係がそれぞれ BOOT-INF/classes
と BOOT-INF/lib
に含まれています。同様に、実行可能 war には、アプリケーションのクラスが WEB-INF/classes
に含まれ、依存関係が WEB-INF/lib
と WEB-INF/lib-provided
に含まれています。jar または war のコンテンツから docker イメージを作成する必要がある場合は、これらのディレクトリをさらに分離して、個別のレイヤーに書き込むことができると便利です。
階層化されたアーカイブは、通常の再パッケージ化された jar または war と同じレイアウトを使用しますが、各層を説明する追加のメタデータファイルが含まれています。
デフォルトでは、次のレイヤーが定義されています。
dependencies
(バージョンにSNAPSHOT
を含まない依存関係の場合)。ローダークラスの
spring-boot-loader
。バージョンに
SNAPSHOT
が含まれる依存関係のsnapshot-dependencies
。ローカルモジュールの依存関係、アプリケーションクラス、リソース用の
application
。
モジュールの依存関係は、現在のビルドの一部であるすべてのモジュールを調べることによって識別されます。モジュールの依存関係が Maven のローカルキャッシュにインストールされており、現在のビルドの一部ではないためにのみ解決できる場合、通常の依存関係として識別されます。
レイヤーの順序は、アプリケーションの一部が変更されたときに前のレイヤーがキャッシュされる可能性を決定するため、重要です。デフォルトの順序は dependencies
、spring-boot-loader
、snapshot-dependencies
、application
です。変更の可能性が最も低いコンテンツを最初に追加し、次に変更の可能性が高いレイヤーを追加する必要があります。
再パッケージ化されたアーカイブには、デフォルトで layers.idx
ファイルが含まれています。この機能を無効にするには、次の方法で無効にします。
<project>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<layers>
<enabled>false</enabled>
</layers>
</configuration>
</plugin>
</plugins>
</build>
</project>
カスタムレイヤー構成
アプリケーションによっては、レイヤーの作成方法を調整し、新しいレイヤーを追加したい場合があります。これは、以下に示すように登録する必要がある別の構成ファイルを使用して実行できます。
<project>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<layers>
<enabled>true</enabled>
<configuration>${project.basedir}/src/layers.xml</configuration>
</layers>
</configuration>
</plugin>
</plugins>
</build>
</project>
構成ファイルには、アーカイブをレイヤーに分割する方法と、それらのレイヤーの順序が記述されています。次の例は、上記のデフォルトの順序を明示的に定義する方法を示しています。
<layers xmlns="http://www.springframework.org/schema/boot/layers"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/boot/layers
https://www.springframework.org/schema/boot/layers/layers-3.4.xsd">
<application>
<into layer="spring-boot-loader">
<include>org/springframework/boot/loader/**</include>
</into>
<into layer="application" />
</application>
<dependencies>
<into layer="application">
<includeModuleDependencies />
</into>
<into layer="snapshot-dependencies">
<include>*:*:*SNAPSHOT</include>
</into>
<into layer="dependencies" />
</dependencies>
<layerOrder>
<layer>dependencies</layer>
<layer>spring-boot-loader</layer>
<layer>snapshot-dependencies</layer>
<layer>application</layer>
</layerOrder>
</layers>
layers
XML 形式は、3 つのセクションで定義されています。
<application>
ブロックは、アプリケーションクラスとリソースを階層化する方法を定義します。<dependencies>
ブロックは、依存関係の階層化方法を定義します。<layerOrder>
ブロックは、レイヤーが書き込まれる順序を定義します。
ネストされた <into>
ブロックは、<application>
および <dependencies>
セクション内で使用され、レイヤーのコンテンツを要求します。ブロックは、定義された順序で上から下に評価されます。前のブロックで要求されていないコンテンツは、引き続き後続のブロックで検討できます。
<into>
ブロックは、ネストされた <include>
要素と <exclude>
要素を使用してコンテンツを要求します。<application>
セクションは、包含 / 除外式に Ant スタイルのパスマッチングを使用します。<dependencies>
セクションは group:artifact[:version]
パターンを使用します。また、ローカルモジュールの依存関係を含めたり除外したりするために使用できる <includeModuleDependencies />
および <excludeModuleDependencies />
要素も提供します。
<include>
が定義されていない場合、すべてのコンテンツ(前のブロックで要求されていない)が考慮されます。
<exclude>
が定義されていない場合、除外は適用されません。
上記の <dependencies>
の例を見ると、最初の <into>
が application.layer
のすべてのモジュール依存関係を要求していることがわかります。次の <into>
は、snapshot-dependencies
レイヤーのすべての SNAPSHOT 依存関係を要求します。最終的な <into>
は、dependencies
レイヤーに残っているもの(この場合、SNAPSHOT ではない依存関係)を要求します。
<application>
ブロックにも同様のルールがあります。最初に spring-boot-loader
レイヤーの org/springframework/boot/loader/**
コンテンツを要求します。次に、application
レイヤーの残りのクラスとリソースを要求します。
<into> ブロックが定義される順序は、多くの場合、レイヤーが書き込まれる順序とは異なります。このため、<layerOrder> 要素は常に含まれている必要があり、<into> ブロックによって参照されるすべてのレイヤーをカバーする必要があります。 |
spring-boot:repackage
org.springframework.boot:spring-boot-maven-plugin:3.4.1
java -jar
を使用してコマンドラインから実行できるように、既存の JAR および WAR アーカイブを再パッケージ化します。layout=NONE
を使用すると、ネストされた依存関係を持つ JAR を単純にパッケージ化することもできます(メインクラスがないため、実行可能ファイルではありません)。
オプションのパラメーター
名前 | タイプ | デフォルト |
---|---|---|
|
| |
| ||
| ||
| ||
|
| |
|
| |
| ||
| ||
|
| |
|
| |
|
| |
| ||
| ||
|
| |
| ||
|
|
パラメーターの詳細
attach
再パッケージ化されたアーカイブを添付して、ローカル Maven リポジトリにインストールするか、リモートリポジトリにデプロイします。分類子が構成されていない場合、通常の jar を置き換えます。classifier
が通常の jar と再パッケージ化された jar が異なるように構成されている場合、通常の jar と一緒に接続されます。プロパティが false
に設定されている場合、再パッケージ化されたアーカイブはインストールまたはデプロイされません。
名前 |
|
---|---|
タイプ |
|
デフォルト値 |
|
ユーザープロパティ | |
開始 |
|
classifier
再パッケージ化されたアーカイブに追加する分類子。指定しない場合、メインのアーティファクトは再パッケージ化されたアーカイブに置き換えられます。指定された場合、分類子は、再パッケージ化するソースアーカイブを決定するためにも使用されます。その分類子を持つアーティファクトがすでに存在する場合、それがソースとして使用され、置き換えられます。そのようなアーティファクトが存在しない場合、メインのアーティファクトがソースとして使用され、再パッケージ化されたアーカイブがその分類子の補足アーティファクトとして添付されます。アーティファクトをアタッチすると、元のアーティファクトと一緒にデプロイできます。詳細については、Maven のドキュメントを参照してください [Apache] (英語) 。
名前 |
|
---|---|
タイプ |
|
デフォルト値 | |
ユーザープロパティ | |
開始 |
|
embeddedLaunchScript
jar が完全に実行可能な場合、jar の前に追加する埋め込み起動スクリプト。指定しない場合は、"Spring Boot" デフォルトスクリプトが使用されます。
名前 |
|
---|---|
タイプ |
|
デフォルト値 | |
ユーザープロパティ | |
開始 |
|
embeddedLaunchScriptProperties
埋め込み起動スクリプトで展開する必要があるプロパティ。
名前 |
|
---|---|
タイプ |
|
デフォルト値 | |
ユーザープロパティ | |
開始 |
|
excludeDevtools
再パッケージ化されたアーカイブから Spring Boot devtools を除外します。
名前 |
|
---|---|
タイプ |
|
デフォルト値 |
|
ユーザープロパティ |
|
開始 |
|
excludeDockerCompose
再パッケージ化されたアーカイブから Spring Boot 開発サービスを除外します。
名前 |
|
---|---|
タイプ |
|
デフォルト値 |
|
ユーザープロパティ |
|
開始 |
|
excludeGroupIds
除外する groupId 名のカンマ区切りリスト (完全一致)。
名前 |
|
---|---|
タイプ |
|
デフォルト値 | |
ユーザープロパティ |
|
開始 |
|
excludes
除外するアーティファクト定義のコレクション。Exclude
要素は、必須の groupId
および artifactId
コンポーネントとオプションの classifier
コンポーネントを定義します。プロパティとして構成する場合、値はコンマで区切られ、コンポーネントはコロンで区切られる必要があります: groupId:artifactId,groupId:artifactId:classifier
名前 |
|
---|---|
タイプ |
|
デフォルト値 | |
ユーザープロパティ |
|
開始 |
|
executable
起動スクリプトを jar の先頭に追加して、*nix マシン用の完全に実行可能な jar を作成します。<p> 現在、一部のツールはこの形式を受け入れないため、常にこの手法を使用できるとは限りません。例: jar -xf
は、完全に実行可能にされた jar または war の抽出に暗黙的に失敗する場合があります。このオプションは、java -jar
で実行したり、サーブレットコンテナーにデプロイしたりするのではなく、直接実行する場合にのみ有効にすることをお勧めします。
名前 |
|
---|---|
タイプ |
|
デフォルト値 |
|
ユーザープロパティ | |
開始 |
|
includeSystemScope
システムスコープの依存関係を含めます。
名前 |
|
---|---|
タイプ |
|
デフォルト値 |
|
ユーザープロパティ | |
開始 |
|
includes
含めるアーティファクト定義のコレクション。Include
要素は、必須の groupId
および artifactId
コンポーネントとオプションの classifier
コンポーネントを定義します。プロパティとして構成する場合、値はコンマで区切られ、コンポーネントはコロンで区切られる必要があります: groupId:artifactId,groupId:artifactId:classifier
名前 |
|
---|---|
タイプ |
|
デフォルト値 | |
ユーザープロパティ |
|
開始 |
|
layers
レイヤーの作成を無効にし、レイヤーツール jar を除外し、カスタムレイヤー構成ファイルを提供するオプションを備えたレイヤー構成。
名前 |
|
---|---|
タイプ | |
デフォルト値 | |
ユーザープロパティ | |
開始 |
|
layout
アーカイブの型(依存関係がアーカイブ内にどのように配置されているかに対応します)。可能な値は JAR
、WAR
、ZIP
、DIR
、NONE
です。デフォルトは、アーカイブ型に基づく推測です。
名前 |
|
---|---|
タイプ |
|
デフォルト値 | |
ユーザープロパティ |
|
開始 |
|
layoutFactory
明示的なレイアウトが設定されていない場合に実行可能アーカイブを作成するために使用されるレイアウトファクトリ。サードパーティが代替レイアウトの実装を提供できます。
名前 |
|
---|---|
タイプ |
|
デフォルト値 | |
ユーザープロパティ | |
開始 |
|
loaderImplementation
使用する必要があるローダー実装。
名前 |
|
---|---|
タイプ |
|
デフォルト値 | |
ユーザープロパティ | |
開始 |
|
mainClass
メインクラスの名前。指定しない場合、main
メソッドを含む最初に見つかったコンパイル済みクラスが使用されます。
名前 |
|
---|---|
タイプ |
|
デフォルト値 | |
ユーザープロパティ | |
開始 |
|
outputDirectory
生成されたアーカイブを含むディレクトリ。
名前 |
|
---|---|
タイプ |
|
デフォルト値 |
|
ユーザープロパティ | |
開始 |
|
outputTimestamp
ISO 8601(yyyy-MM-dd’T’HH:mm:ssXXX
)またはエポックからの秒数を表す int
としてフォーマットされた、再現可能な出力アーカイブエントリのタイムスタンプ。
名前 |
|
---|---|
タイプ |
|
デフォルト値 |
|
ユーザープロパティ | |
開始 |
|
サンプル
カスタム分類子
デフォルトでは、repackage
ゴールは元のアーティファクトを再パッケージ化されたアーティファクトに置き換えます。これは、アプリケーションを表すモジュールの正常な動作ですが、モジュールが別のモジュールの依存関係として使用される場合、再パッケージ化されたモジュールの分類子を提供する必要があります。その理由は、依存クラスが再パッケージ化された jar のクラスをロードできないように、アプリケーションクラスが BOOT-INF/classes
にパッケージ化されているためです。
その場合、または元のアーティファクトを保持し、別の分類子を使用して再パッケージ化されたアーティファクトを添付する場合は、次の例に示すようにプラグインを構成します。
<project>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<id>repackage</id>
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<classifier>exec</classifier>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
spring-boot-starter-parent
を使用している場合、repackage
ゴールは ID repackage
の実行で自動的に実行されます。そのセットアップでは、次の例に示すように、構成のみを指定する必要があります。
<project>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<id>repackage</id>
<configuration>
<classifier>exec</classifier>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
この構成では、2 つのアーティファクトが生成されます。元のアーティファクトと、再パッケージ化のゴールによって生成された再パッケージ化されたカウンターパートです。両方とも透過的にインストール / デプロイされます。
メインアーティファクトが置き換えられるのと同じメソッドでセカンダリアーティファクトを再パッケージ化する場合も、同じ構成を使用できます。次の構成は、再パッケージ化されたアプリケーションとともに単一の task
分類アーティファクトをインストール / デプロイします。
<project>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>jar</goal>
</goals>
<phase>package</phase>
<configuration>
<classifier>task</classifier>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<id>repackage</id>
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<classifier>task</classifier>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
maven-jar-plugin
と spring-boot-maven-plugin
の両方が同じフェーズで実行されるため、jar プラグインを最初に定義することが重要です(再パッケージ化のゴールの前に実行されるように)。再び、spring-boot-starter-parent
を使用している場合、これは次のように簡略化できます。
<project>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<id>default-jar</id>
<configuration>
<classifier>task</classifier>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<id>repackage</id>
<configuration>
<classifier>task</classifier>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
カスタム名
再パッケージ化された jar に、プロジェクトの artifactId
属性で定義されたものとは異なるローカル名を付ける必要がある場合は、次の例に示すように、標準の finalName
を使用します。
<project>
<build>
<finalName>my-app</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<id>repackage</id>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
この構成により、target/my-app.jar
に再パッケージ化されたアーティファクトが生成されます。
ローカルで再パッケージ化されたアーティファクト
デフォルトでは、repackage
のゴールは、元の成果物を実行可能な成果物に置き換えます。元の jar のみをデプロイし、それでも通常のファイル名でアプリを実行できる必要がある場合は、次のようにプラグインを構成します。
<project>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<id>repackage</id>
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<attach>false</attach>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
この構成では、2 つのアーティファクトが生成されます。元のアーティファクトと、repackage
ゴールによって生成された実行可能なカウンターパートです。オリジナルのもののみがインストール / デプロイされます。
カスタムレイアウト
Spring Boot は、ビルドプラグインへの依存関係として提供される追加の jar ファイルで定義されたカスタムレイアウトファクトリを使用して、このプロジェクトの jar ファイルを再パッケージ化します。
<project>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<id>repackage</id>
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<layoutFactory implementation="com.example.CustomLayoutFactory">
<customProperty>value</customProperty>
</layoutFactory>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>com.example</groupId>
<artifactId>custom-layout</artifactId>
<version>0.0.1.BUILD-SNAPSHOT</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</project>
レイアウトファクトリは、pom で明示的に指定された LayoutFactory
(spring-boot-loader-tools
から)の実装として提供されます。プラグインクラスパスにカスタム LayoutFactory
が 1 つだけあり、それが META-INF/spring.factories
にリストされている場合、プラグイン構成で明示的に設定する必要はありません。
明示的なレイアウトが設定されている場合、レイアウトファクトリは常に無視されます。
依存関係の除外
デフォルトでは、repackage
ゴールと run
ゴールの両方に、プロジェクトで定義されている provided
依存関係が含まれます。Spring Boot プロジェクトでは、provided
の依存関係を、アプリケーションの実行に必要な「コンテナー」の依存関係と見なす必要があります。一般に、Spring Boot プロジェクトは依存関係として使用されないため、optional
依存関係を持つ可能性はほとんどありません。プロジェクトにオプションの依存関係がある場合、それらも repackage
および run
ゴールに含まれます。
これらの依存関係の一部はまったく必要ない場合があり、実行可能な jar から除外する必要があります。一貫性を保つために、アプリケーションの実行時にも存在しないようにする必要があります。
実行時にパッケージ化 / 使用から依存関係を除外する方法は 2 つあります。
groupId
およびartifactId
で識別される特定のアーティファクトを除外します。必要に応じて、オプションでclassifier
を使用します。特定の
groupId
に属するアーティファクトを除外します。
次の例では、com.example:module1
を除外し、その成果物のみを除外します。
<project>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>com.example</groupId>
<artifactId>module1</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
この例では、com.example
グループに属するアーティファクトを除外します。
<project>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludeGroupIds>com.example</excludeGroupIds>
</configuration>
</plugin>
</plugins>
</build>
</project>
JAR ツール
階層化された jar または war が作成されると、spring-boot-jarmode-tools
jar が依存関係としてアーカイブに追加されます。クラスパス上のこの jar を使用すると、特別なモードでアプリケーションを起動できます。これにより、ブートストラップコードで、アプリケーションとはまったく異なるもの(たとえば、レイヤーを抽出するもの)を実行できます。この依存関係を除外する場合は、次の方法で行うことができます。
<project>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<includeTools>false</includeTools>
</configuration>
</plugin>
</plugins>
</build>
</project>
カスタムレイヤー構成
デフォルトのセットアップでは、依存関係がスナップショットと非スナップショットに分割されますが、より複雑なルールがある場合があります。例: プロジェクトの会社固有の依存関係を専用レイヤーに分離したい場合があります。次の layers.xml
構成は、そのような設定の 1 つを示しています。
<layers xmlns="http://www.springframework.org/schema/boot/layers"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/boot/layers
https://www.springframework.org/schema/boot/layers/layers-3.4.xsd">
<application>
<into layer="spring-boot-loader">
<include>org/springframework/boot/loader/**</include>
</into>
<into layer="application" />
</application>
<dependencies>
<into layer="snapshot-dependencies">
<include>*:*:*SNAPSHOT</include>
</into>
<into layer="company-dependencies">
<include>com.acme:*</include>
</into>
<into layer="dependencies"/>
</dependencies>
<layerOrder>
<layer>dependencies</layer>
<layer>spring-boot-loader</layer>
<layer>snapshot-dependencies</layer>
<layer>company-dependencies</layer>
<layer>application</layer>
</layerOrder>
</layers>
上記の構成では、すべてのライブラリに com.acme
groupId を含む追加の company-dependencies
レイヤーが作成されます。