Maven でアプリケーションを実行する
プラグインには、次の例に示すように、コマンドラインからアプリケーションを起動するために使用できる実行ゴールが含まれています。
$ mvn spring-boot:run
アプリケーション引数は、arguments
パラメーターを使用して指定できます。詳細については、アプリケーション引数の使用を参照してください。
アプリケーションはフォークされたプロセスで実行され、コマンドラインでプロパティを設定してもアプリケーションには影響しません。いくつかの JVM 引数を指定する必要がある場合(つまり、デバッグ目的で)、jvmArguments
パラメーターを使用できます。詳細については、アプリケーションをデバッグするを参照してください。システムプロパティと環境変数も明示的にサポートされています。
プロファイルを有効にすることは非常に一般的であるため、-Dspring-boot.run.jvmArguments="-Dspring.profiles.active=dev"
のショートカットを提供する専用の profiles
プロパティがあります。アクティブなプロファイルを指定するを参照してください。
Spring Boot devtools
は、Spring Boot アプリケーションで作業する際の開発時のエクスペリエンスを改善するモジュールです。有効にするには、次の依存関係をプロジェクトに追加するだけです:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
devtools
が実行中の場合、アプリケーションを再コンパイルすると変更が検出され、自動的にリフレッシュされます。これはリソースだけでなくコードにも適用されます。また、LiveReload サーバーも提供されるため、変更があった場合は常にブラウザーのリフレッシュが自動的にトリガーされます。
Devtools は、静的リソースが変更された場合にのみブラウザーをリフレッシュするように構成することもできます(コードの変更は無視します)。プロジェクトに次のプロパティを含めるだけです。
spring.devtools.remote.restart.enabled=false
devtools
より前のバージョンでは、プラグインはデフォルトでリソースのホットリフレッシュをサポートしていましたが、上記の解決策を採用したため、現在は無効になっています。プロジェクトを構成することで、いつでもこれを復元できます。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<addResources>true</addResources>
</configuration>
</plugin>
</plugins>
</build>
addResources
が有効な場合、アプリケーションの実行時に src/main/resources
ディレクトリがアプリケーションのクラスパスに追加され、クラス出力で見つかった重複は削除されます。これにより、リソースのホットリフレッシュが可能になり、Web アプリケーションの開発時に非常に役立ちます。例: HTML、CSS、JavaScript ファイルで作業し、アプリケーションを再コンパイルすることなく変更をすぐに確認できます。これは、フロントエンド開発者が Java IDE をダウンロードしてインストールすることなく作業できるようにする便利な方法でもあります。
この機能を使用する副作用は、ビルド時にリソースのフィルタリングが機能しないことです。 |
repackage
ゴールと一貫性を保つために、run
ゴールは、プラグインの構成で除外される依存関係がクラスパスからも除外されるような方法でクラスパスを構築します。詳細については、専用の例を参照してください。
場合によっては、アプリケーションのテスト版を実行すると便利です。例: 開発時に Testcontainers を使用する場合、またはいくつかのテストスタブを使用する場合。この目的には、run
と同じ機能と構成オプションの多くを備えた test-run
ゴールを使用します。
spring-boot:run
org.springframework.boot:spring-boot-maven-plugin:3.3.5
アプリケーションを所定の場所で実行します。
オプションのパラメーター
名前 | タイプ | デフォルト |
---|---|---|
|
| |
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
|
| |
| ||
|
| |
| ||
|
| |
|
パラメーターの詳細
addResources
maven リソースをクラスパスに直接追加します。これにより、リソースのライブインプレース編集が可能になります。重複するリソースは、ClassLoader.getResources()
が呼び出された場合に 2 回表示されるのを防ぐために、target/classes
から削除されます。代わりに spring-boot-devtools
をプロジェクトに追加することを検討してください。これは、この機能とその他多くの機能を提供します。
名前 |
|
---|---|
タイプ |
|
デフォルト値 |
|
ユーザープロパティ |
|
開始 |
|
additionalClasspathElements
クラスパスに追加する必要がある追加のクラスパス要素。要素は、クラスとリソースを含むディレクトリ、または jar ファイルです。
名前 |
|
---|---|
タイプ |
|
デフォルト値 | |
ユーザープロパティ |
|
開始 |
|
agents
エージェント jar へのパス。
名前 |
|
---|---|
タイプ |
|
デフォルト値 | |
ユーザープロパティ |
|
開始 |
|
classesDirectory
アプリケーションの実行に使用するクラスとリソースファイルを含むディレクトリ。
名前 |
|
---|---|
タイプ |
|
デフォルト値 |
|
ユーザープロパティ | |
開始 |
|
commandlineArguments
アプリケーションに渡す必要のあるコマンドラインからの引数。スペースを使用して複数の引数を区切り、引用符で複数の値を囲むようにしてください。指定すると、#arguments
よりも優先されます。
名前 |
|
---|---|
タイプ |
|
デフォルト値 | |
ユーザープロパティ |
|
開始 |
|
directories
クラスパスに追加する必要があるクラスまたはリソースを含む追加のディレクトリ。
名前 |
|
---|---|
タイプ |
|
デフォルト値 | |
ユーザープロパティ |
|
開始 |
|
environmentVariables
アプリケーションの実行に使用されるフォークされたプロセスに関連付ける必要がある環境変数のリスト。
名前 |
|
---|---|
タイプ |
|
デフォルト値 | |
ユーザープロパティ | |
開始 |
|
excludeGroupIds
除外する groupId 名のカンマ区切りリスト (完全一致)。
名前 |
|
---|---|
タイプ |
|
デフォルト値 | |
ユーザープロパティ |
|
開始 |
|
excludes
除外するアーティファクト定義のコレクション。Exclude
要素は、必須の groupId
および artifactId
コンポーネントとオプションの classifier
コンポーネントを定義します。プロパティとして構成する場合、値はコンマで区切られ、コンポーネントはコロンで区切られる必要があります: groupId:artifactId,groupId:artifactId:classifier
名前 |
|
---|---|
タイプ |
|
デフォルト値 | |
ユーザープロパティ |
|
開始 |
|
includes
含めるアーティファクト定義のコレクション。Include
要素は、必須の groupId
および artifactId
コンポーネントとオプションの classifier
コンポーネントを定義します。プロパティとして構成する場合、値はコンマで区切られ、コンポーネントはコロンで区切られる必要があります: groupId:artifactId,groupId:artifactId:classifier
名前 |
|
---|---|
タイプ |
|
デフォルト値 | |
ユーザープロパティ |
|
開始 |
|
jvmArguments
アプリケーションの実行に使用されるフォークされたプロセスに関連付ける必要がある JVM 引数。コマンドラインでは、複数の値を引用符で囲んでください。
名前 |
|
---|---|
タイプ |
|
デフォルト値 | |
ユーザープロパティ |
|
開始 |
|
mainClass
メインクラスの名前。指定しない場合、"main" メソッドを含む最初に見つかったコンパイル済みクラスが使用されます。
名前 |
|
---|---|
タイプ |
|
デフォルト値 | |
ユーザープロパティ |
|
開始 |
|
noverify
エージェントが -noverify を必要とすることを示すフラグ。
名前 |
|
---|---|
タイプ |
|
デフォルト値 | |
ユーザープロパティ |
|
開始 |
|
optimizedLaunch
JVM の起動を最適化する必要があるかどうか。
名前 |
|
---|---|
タイプ |
|
デフォルト値 |
|
ユーザープロパティ |
|
開始 |
|
profiles
アクティブにする Spring プロファイル。'spring.profiles.active' 引数を指定する便利なショートカット。コマンドラインでは、コンマを使用して複数のプロファイルを区切ります。
名前 |
|
---|---|
タイプ |
|
デフォルト値 | |
ユーザープロパティ |
|
開始 |
|
systemPropertyVariables
プロセスに渡す JVM システムプロパティのリスト。
名前 |
|
---|---|
タイプ |
|
デフォルト値 | |
ユーザープロパティ | |
開始 |
|
spring-boot:test-run
org.springframework.boot:spring-boot-maven-plugin:3.3.5
テストランタイムクラスパスを使用してアプリケーションを適切に実行します。アプリケーションの起動に使用されるメインクラスは次のように決定されます。設定されているメインクラス (存在する場合)。次に、テストクラスディレクトリでメインクラスが見つかります (存在する場合)。次に、classes ディレクトリ内にメインクラスが見つかります (存在する場合)。
オプションのパラメーター
名前 | タイプ | デフォルト |
---|---|---|
|
| |
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
|
| |
| ||
|
| |
| ||
|
パラメーターの詳細
addResources
maven リソースをクラスパスに直接追加します。これにより、リソースのライブインプレース編集が可能になります。重複するリソースは、ClassLoader.getResources()
が呼び出された場合に 2 回表示されるのを防ぐために、target/classes
から削除されます。代わりに spring-boot-devtools
をプロジェクトに追加することを検討してください。これは、この機能とその他多くの機能を提供します。
名前 |
|
---|---|
タイプ |
|
デフォルト値 |
|
ユーザープロパティ |
|
開始 |
|
additionalClasspathElements
クラスパスに追加する必要がある追加のクラスパス要素。要素は、クラスとリソースを含むディレクトリ、または jar ファイルです。
名前 |
|
---|---|
タイプ |
|
デフォルト値 | |
ユーザープロパティ |
|
開始 |
|
agents
エージェント jar へのパス。
名前 |
|
---|---|
タイプ |
|
デフォルト値 | |
ユーザープロパティ |
|
開始 |
|
classesDirectory
アプリケーションの実行に使用するクラスとリソースファイルを含むディレクトリ。
名前 |
|
---|---|
タイプ |
|
デフォルト値 |
|
ユーザープロパティ | |
開始 |
|
commandlineArguments
アプリケーションに渡す必要のあるコマンドラインからの引数。スペースを使用して複数の引数を区切り、引用符で複数の値を囲むようにしてください。指定すると、#arguments
よりも優先されます。
名前 |
|
---|---|
タイプ |
|
デフォルト値 | |
ユーザープロパティ |
|
開始 |
|
directories
クラスパスに追加する必要があるクラスまたはリソースを含む追加のディレクトリ。
名前 |
|
---|---|
タイプ |
|
デフォルト値 | |
ユーザープロパティ |
|
開始 |
|
environmentVariables
アプリケーションの実行に使用されるフォークされたプロセスに関連付ける必要がある環境変数のリスト。
名前 |
|
---|---|
タイプ |
|
デフォルト値 | |
ユーザープロパティ | |
開始 |
|
excludeGroupIds
除外する groupId 名のカンマ区切りリスト (完全一致)。
名前 |
|
---|---|
タイプ |
|
デフォルト値 | |
ユーザープロパティ |
|
開始 |
|
excludes
除外するアーティファクト定義のコレクション。Exclude
要素は、必須の groupId
および artifactId
コンポーネントとオプションの classifier
コンポーネントを定義します。プロパティとして構成する場合、値はコンマで区切られ、コンポーネントはコロンで区切られる必要があります: groupId:artifactId,groupId:artifactId:classifier
名前 |
|
---|---|
タイプ |
|
デフォルト値 | |
ユーザープロパティ |
|
開始 |
|
includes
含めるアーティファクト定義のコレクション。Include
要素は、必須の groupId
および artifactId
コンポーネントとオプションの classifier
コンポーネントを定義します。プロパティとして構成する場合、値はコンマで区切られ、コンポーネントはコロンで区切られる必要があります: groupId:artifactId,groupId:artifactId:classifier
名前 |
|
---|---|
タイプ |
|
デフォルト値 | |
ユーザープロパティ |
|
開始 |
|
jvmArguments
アプリケーションの実行に使用されるフォークされたプロセスに関連付ける必要がある JVM 引数。コマンドラインでは、複数の値を引用符で囲んでください。
名前 |
|
---|---|
タイプ |
|
デフォルト値 | |
ユーザープロパティ |
|
開始 |
|
mainClass
メインクラスの名前。指定しない場合、"main" メソッドを含む最初に見つかったコンパイル済みクラスが使用されます。
名前 |
|
---|---|
タイプ |
|
デフォルト値 | |
ユーザープロパティ |
|
開始 |
|
noverify
エージェントが -noverify を必要とすることを示すフラグ。
名前 |
|
---|---|
タイプ |
|
デフォルト値 | |
ユーザープロパティ |
|
開始 |
|
optimizedLaunch
JVM の起動を最適化する必要があるかどうか。
名前 |
|
---|---|
タイプ |
|
デフォルト値 |
|
ユーザープロパティ |
|
開始 |
profiles
アクティブにする Spring プロファイル。'spring.profiles.active' 引数を指定する便利なショートカット。コマンドラインでは、コンマを使用して複数のプロファイルを区切ります。
名前 |
|
---|---|
タイプ |
|
デフォルト値 | |
ユーザープロパティ |
|
開始 |
|
systemPropertyVariables
プロセスに渡す JVM システムプロパティのリスト。
名前 |
|
---|---|
タイプ |
|
デフォルト値 | |
ユーザープロパティ | |
開始 |
|
サンプル
アプリケーションをデバッグする
run
および test-run
ゴールは、フォークされたプロセスでアプリケーションを実行します。デバッグする必要がある場合は、必要な JVM 引数を追加して、リモートデバッグを有効にする必要があります。次の設定では、デバッガーがポート 5005 に参加するまでプロセスが一時停止されます。
<project>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<jvmArguments>
-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=*:5005
</jvmArguments>
</configuration>
</plugin>
</plugins>
</build>
</project>
これらの引数はコマンドラインでも指定できます。
$ mvn spring-boot:run -Dspring-boot.run.jvmArguments=-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=*:5005
システムプロパティの使用
システムプロパティは、systemPropertyVariables
属性を使用して指定できます。次の例では、property1
を test
に、property2
を 42 に設定します。
<project>
<build>
<properties>
<my.value>42</my.value>
</properties>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<systemPropertyVariables>
<property1>test</property1>
<property2>${my.value}</property2>
</systemPropertyVariables>
</configuration>
</plugin>
</plugins>
</build>
</project>
値が空または定義されていない (つまり <my-property/
>) 場合、システムプロパティは値として空の文字列で設定されます。Maven は pom で指定された値をトリムするため、このメカニズムを使用してスペースで開始または終了する必要があるシステムプロパティを指定することはできません。代わりに jvmArguments
の使用を検討してください。
文字列型の Maven 変数は、システムプロパティとして渡すことができます。他の Maven 変数型(たとえば、List
または URL
変数)を渡そうとすると、変数式が文字通り(未評価)渡されます。
jvmArguments
パラメーターは、上記のメカニズムで定義されたシステムプロパティよりも優先されます。次の例では、property1
の値は overridden
です。
$ mvn spring-boot:run -Dspring-boot.run.jvmArguments="-Dproperty1=overridden"
環境変数の使用
環境変数は、environmentVariables
属性を使用して指定できます。次の例では、"ENV1"、"ENV2"、"ENV3"、"ENV4" の env 変数を設定します。
<project>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<environmentVariables>
<ENV1>5000</ENV1>
<ENV2>Some Text</ENV2>
<ENV3/>
<ENV4></ENV4>
</environmentVariables>
</configuration>
</plugin>
</plugins>
</build>
</project>
値が空であるか定義されていない場合(つまり、<MY_ENV/
>)、env 変数は値として空の文字列で設定されます。Maven は、pom で指定された値をトリミングするため、スペースで開始または終了する必要がある環境変数を指定することはできません。
文字列型の Maven 変数は、システムプロパティとして渡すことができます。他の Maven 変数型(たとえば、List
または URL
変数)を渡そうとすると、変数式が文字通り(未評価)渡されます。
この方法で定義された環境変数は、既存の値よりも優先されます。
アプリケーション引数の使用
アプリケーションの引数は、arguments
属性を使用して指定できます。次の例では、2 つの引数 property1
および property2=42
を設定します。
<project>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<arguments>
<argument>property1</argument>
<argument>property2=${my.value}</argument>
</arguments>
</configuration>
</plugin>
</plugins>
</build>
</project>
コマンドラインでは、引数は jvmArguments
と同じようにスペースで区切られます。引数にスペースが含まれる場合は、必ず引用符で囲んでください。次の例では、2 つの引数 property1
および property2=Hello World
を使用できます。
$ mvn spring-boot:run -Dspring-boot.run.arguments="property1 'property2=Hello World'"
アクティブなプロファイルを指定する
特定のアプリケーションに使用するアクティブなプロファイルは、profiles
引数を使用して指定できます。
次の構成により、local
および dev
プロファイルが有効になります。
<project>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<profiles>
<profile>local</profile>
<profile>dev</profile>
</profiles>
</configuration>
</plugin>
</plugins>
</build>
</project>
有効にするプロファイルは、コマンドラインでも指定できます。次の例に示すように、必ずコンマで区切ります。
$ mvn spring-boot:run -Dspring-boot.run.profiles=local,dev